如何让我的Discord bot仅在代码中两个变量相等时发送消息?
Discord Bot运行错误修复方案
代码存在的问题
client.run()是阻塞启动方法,放置在业务逻辑前会导致后续获取频道、定义事件的代码完全无法执行,必须放在代码的最后一行- 没有用
@client.event装饰器修饰on_ready函数,Discord客户端无法识别这个事件回调 - 缩进错误:if分支下的
await语句没有对应缩进,else块位置错误,应该放在on_ready函数内部与if平级 - 频道获取操作执行时机不对:客户端还未完成登录连接时调用
client.get_channel只会返回None,必须放在on_ready内部执行
修正后的可用代码
import discord client = discord.Client() v1 = 1 v2 = 2 # 测试时修改为1即可触发发消息逻辑 @client.event async def on_ready(): # 客户端登录完成后再获取频道 announcements1 = client.get_channel(123123) # 替换为你自己的频道ID if v1 == v2: await announcements1.send('hello') else: print("no") # client.run必须放在代码最后 client.run('123123') # 替换为你自己的bot token
你的需求完全可以实现,将v1和v2设置为相等值后启动bot,登录完成就会自动往指定频道发送hello消息。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

