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

如何用Python编写Discord机器人监听RPG bot并在群活动时@全员提醒

Python Discord活动提醒机器人代码修正方案

代码问题修复点

  • 补全缺失的依赖导入:新增os模块导入适配你调用的os.environ环境变量取值逻辑,引入asyncio用非阻塞的asyncio.sleep替换原time.sleep,避免阻塞机器人整个事件循环
  • 补全on_ready回调的@client.event装饰器,否则机器人登录成功后不会触发对应打印逻辑
  • 修复原代码的缩进错误:原代码两个关键词判断的行首多了1个空格,会直接抛出语法错误
  • 新增RPG Bot专属过滤逻辑:只监听指定RPG机器人发布的消息,避免普通用户发送带关键词的内容误触发提醒,你需要将代码中RPG_BOT_ID替换为你要监听的RPG机器人的实际用户ID
  • 优化关键词匹配逻辑:统一转小写判断避免大小写差异导致的漏判,合并重复触发逻辑避免同一条活动消息发送两次艾特提醒
  • 新增消息内容权限声明:Discord新版API要求显式开启消息内容读取权限,你需要先在Discord开发者后台的Bot设置页打开Message Content Intent开关,代码初始化时也需要显式声明对应意图

修正后完整代码

import os
import asyncio
import discord

# 填写你要监听的RPG机器人的用户ID
RPG_BOT_ID = 123456789012345678

# 声明所需权限
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print('Logged in As {0.user}'.format(client))

@client.event
async def on_message(message):
    # 过滤自身消息、非指定RPG Bot的消息
    if message.author == client.user or message.author.id != RPG_BOT_ID:
        return

    msg = message.content.lower()
    # 匹配活动关键词
    if 'event' in msg:
        await asyncio.sleep(2)
        await message.channel.send("@everyone 活动开始啦,快来参与!")

client.run(os.environ['token'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:54:03