如何用Python提取Discord的Ping消息,仅接收机器人DM通知?
如何仅接收Discord机器人的私信通知
方法1:用Discord内置通知规则(无需编码)
- 打开和机器人的DM会话,点右上角的「通知设置」
- 把这个会话设为「始终通知」,同时把其他私信会话的通知改成「仅提及我时」或「静音」
- 这样哪怕全局私信通知是静音状态,机器人的消息照样会触发通知
方法2:让机器人发带@提及的消息
- 修改机器人的错误通知代码,在消息开头加上
@你的用户名(DM里@自己就能触发提及提醒) - 然后去Discord全局通知设置里,把「私信通知」设为「仅当被提及」
- 这样只有带@的机器人消息会弹通知,其他私信不会打扰你
方法3:用Discord Gateway API监听消息(替代低效轮询)
轮询API既费流量又可能违反Discord准则,推荐用Gateway推送机制,只接收新消息:
- 用官方支持的Discord库(比如
discord.py)监听私信频道的消息事件 - 过滤出发送者是机器人的消息,再触发自定义通知(比如桌面弹窗、声音提醒)
示例代码:
import discord from discord.ext import commands # 开启必要的权限 intents = discord.Intents.default() intents.messages = True intents.message_content = True bot = commands.Bot(command_prefix="!", intents=intents) @bot.event async def on_message(message): # 只处理私信+发送者是机器人的消息 if isinstance(message.channel, discord.DMChannel) and message.author.bot: # 这里可以加自定义通知逻辑,比如桌面弹窗 print(f"机器人通知: {message.content}") # 示例:用win10toast发桌面通知(先安装:pip install win10toast) # from win10toast import ToastNotifier # toaster = ToastNotifier() # toaster.show_toast("机器人错误提醒", message.content, duration=10) await bot.process_commands(message) bot.run("你的机器人令牌")
- 这是Discord官方推荐的方式,不会违反准则,而且只接收新消息,流量消耗极低
内容的提问来源于stack exchange,提问作者Dreadeye
相关产品推荐
相关产品推荐

