You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现discord.py机器人监控新成员,在限定时间内触发处罚

实现新成员加入后限定时长内的警告监控方案

核心思路

  • 用字典存储新成员的用户ID与加入时间戳,监控期结束后自动移除条目以节省内存
  • 成员加入时触发on_member_join事件,记录其加入时间
  • 执行警告命令时,先检查该成员是否处于监控期内,若满足条件则直接执行踢人处罚
  • 监控时长可自定义,比如设置为1小时(3600秒)

代码实现示例

1. 初始化基础配置

import discord
import time
import asyncio
from discord.ext import commands

# 开启必要权限
intents = discord.Intents.default()
intents.members = True
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)

# 存储新成员的监控数据:{用户ID: 加入时间戳}
new_member_monitor = {}
# 设定监控时长(单位:秒,这里为1小时)
MONITOR_PERIOD = 3600

2. 成员加入事件处理

@bot.event
async def on_member_join(member):
    # 记录成员加入时间
    new_member_monitor[member.id] = time.time()
    # 可选:告知新成员监控规则
    await member.send(f"欢迎加入服务器!加入后的{MONITOR_PERIOD//3600}小时内若被警告,将被直接踢出。")
    
    # 监控期结束后自动删除该成员的监控记录
    await asyncio.sleep(MONITOR_PERIOD)
    if member.id in new_member_monitor:
        del new_member_monitor[member.id]

3. 修改警告命令,增加监控检查

假设你的原有警告命令为!warn,修改后如下:

@bot.command()
@commands.has_permissions(kick_members=True)
async def warn(ctx, member: discord.Member, *, reason=None):
    # 执行你已有的警告逻辑(比如记录警告到数据库/文件)
    # --- 这里插入你的原有警告代码 ---
    
    # 检查是否在监控期内
    if member.id in new_member_monitor:
        elapsed_time = time.time() - new_member_monitor[member.id]
        if elapsed_time < MONITOR_PERIOD:
            # 执行踢人操作
            await member.kick(reason=f"加入1小时内被警告:{reason or '无具体理由'}")
            await ctx.send(f"{member.mention} 因加入后1小时内违规被警告,已被踢出服务器。")
            # 踢人后移除监控记录,避免重复处理
            del new_member_monitor[member.id]
        else:
            await ctx.send(f"{member.mention} 已过监控期,仅执行警告。")
    else:
        await ctx.send(f"{member.mention} 不在监控期内,仅执行警告。")

注意事项

  • 必须确保机器人在开发者平台开启了服务器成员特权意图,否则无法触发on_member_join事件
  • 若需要持久化监控数据(避免机器人重启后丢失记录),可以将数据存储到SQLite等数据库中
  • 可根据需求调整MONITOR_PERIOD的数值,比如设为1800秒(30分钟)
  • 机器人需要拥有踢人权限才能执行相应操作

内容的提问来源于stack exchange,提问作者Daddy Myers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:06:33