Discord Bot无法记录Thread创建,无报错且其他日志功能正常
Discord线程创建日志未触发问题修复
问题原因
你的代码无法触发on_thread_create事件,核心原因是未启用线程相关的Intents权限——其他日志功能正常是因为它们依赖的Intents已经正确配置,而线程事件需要单独开启对应权限。
修复步骤
- 在Intents配置中添加
intents.threads = True:discord.Intents.default()默认不包含线程事件的权限,必须显式开启。 - (可选但建议)添加日志频道存在性判断:避免因频道ID错误或Bot无访问权限导致静默失败,方便排查问题。
修改后的完整代码
import discord from discord.ext import commands import os intents = discord.Intents.default() intents.members = True intents.messages = True intents.threads = True # 开启线程事件权限 my_secret = os.environ['TOKEN'] client = commands.Bot(command_prefix='~', intents=intents) logs_chan_id = 1004891934709518376 color_green = 0x00ff1a @client.event async def on_thread_create(thread): embed = discord.Embed(title="线程已创建", description=thread.name, colour=color_green) logs = client.get_channel(logs_chan_id) if logs: await logs.send(embed=embed) else: print(f"无法找到ID为{logs_chan_id}的日志频道") client.run(my_secret)
额外说明
- 若使用discord.py v2.x及以上版本,必须显式声明
intents.threads才能接收线程创建、删除等相关事件,这是新版本对Intents的拆分优化。 - 确认Discord开发者门户中,Bot的常规Intents已启用线程相关权限(该权限不属于特权网关Intents,默认已开启,若异常可在Bot页面的"Gateway Intents"板块检查)。
内容的提问来源于stack exchange,提问作者Maria M.
相关产品推荐
相关产品推荐

