Discord.py报错:channel_id传入内置函数id而非Snowflake值的问题咨询
解决Discord.py中"In channel_id: Value '' is not snowflake"报错
问题原因
你代码里的id是Python的内置函数,并非你需要的频道ID变量。fetch_channel()方法要求传入有效的Discord频道雪花ID(整数或字符串格式),传入内置函数id自然会触发类型错误。
解决方案
- 避免使用内置函数名作为变量名:将你定义的频道ID变量改为其他名称,比如
CHANNEL_ID(大写常量是Python的规范写法)。 - 传入正确的频道ID:确保变量存储的是目标频道的实际雪花ID(可通过Discord客户端开启开发者模式后,右键频道复制获取)。
修正后的代码示例
@client.event async def on_ready(): if CheckIfChapterIsOut(): with open("chapter.txt", "r") as f: chapter = f.readline() print("We have logged in as {0.user}".format(client)) # 替换为你实际的频道ID,也可从环境变量读取 CHANNEL_ID = 123456789012345678 # 示例ID,替换成真实值 channel = await client.fetch_channel(CHANNEL_ID) await channel.send(f"Chapter {chapter} Of Overgeared is out!") await channel.send( f"https://mangarockteam.com/manga/overgeared-team-argo/chapter-{chapter}/" ) client.run(os.getenv('token'))
额外注意
不要用Python内置关键字或函数名(如id、str、list)作为自定义变量名,避免引发类似的混淆问题。
内容的提问来源于stack exchange,提问作者Nodari khvedelidze
相关产品推荐
相关产品推荐

