Discord.py实现支持机器人自动发消息至新建私有频道问题
解决Discord机器人自动向新建工单频道发送消息的问题
你当前使用的on_private_channel_create事件并不适用,因为该事件仅会在用户与机器人的私信频道创建时触发,而Tickets机器人生成的是服务器内的私有文本频道(属于服务器频道范畴),所以这个事件不会被触发。
正确实现方案
使用on_guild_channel_create事件,该事件会在服务器内创建任何频道时触发,配合频道名称判断可以精准定位工单频道:
import discord # 启用必要的Intents,Discord.py v2.x必须配置 intents = discord.Intents.default() intents.guilds = True intents.guild_messages = True client = discord.Client(intents=intents) @client.event async def on_ready(): print("bot is now online") @client.event async def on_guild_channel_create(channel): # 根据Tickets机器人的工单频道命名规则判断,示例为以"ticket-"开头 if channel.name.startswith("ticket-"): try: await channel.send("您好!欢迎创建支持工单,我们会尽快为您处理问题!") except discord.Forbidden: print(f"无法向频道 {channel.name} 发送消息:权限不足") client.run("YOUR_BOT_TOKEN")
关键注意事项
- 权限配置:确保Tickets机器人创建频道时,你的机器人被赋予了该私有频道的「发送消息」权限,否则会抛出权限不足的异常
- 频道判断优化:如果需要更精准的匹配,可以通过对比频道创建者ID(
channel.created_by.id)确认是否为Tickets机器人创建的频道 - Intents开启:前往Discord开发者门户,在机器人页面开启
Guilds和Guild Messages权限,否则事件可能无法触发
内容的提问来源于stack exchange,提问作者Erick Navarro
相关产品推荐
相关产品推荐

