discord.py,在没有 on_message() 事件的情况下通过通道 id 发送消息?
Posted
技术标签:
【中文标题】discord.py,在没有 on_message() 事件的情况下通过通道 id 发送消息?【英文标题】:discord.py, send message by channel id without on_message() event? 【发布时间】:2021-07-23 01:36:00 【问题描述】:我为我的机器人配置和代码中的一般内容创建了一个类,我很整洁 所以,客户端是 discord.Client() 和机器人。是我的课 在我的机器人类中,我存储了一些频道 ID,然后我注意到 client.send_message(channelid, message) 方式不再支持。但是,我将频道 ID 变量编辑为
channel1=client.get_channel(channelid)
client=discord.Client() 在我的课上,它的定义。
我用它来发送消息
await bot.channel1.send("hello world")
我期待该频道中的消息,但现实:
Task exception was never retrieved
future: <Task finished name='Task-2' coro=<bot2() done, defined at /path/to/file/bot.py:46> exception=AttributeError("'NoneType' object has no attribute 'send'")>
Traceback (most recent call last):
File "/path/to/file/bot.py", line 53, in bot2
await bot.channel1.send(fc)
AttributeError: 'NoneType' object has no attribute 'send'
简而言之,我的 channel1 定义是 nonetype.. 为什么?
是的,我在我的代码中使用了另一个 async def 并运行它,因为该代码应该在 on_message() 之外运行并且应该运行 async
我在文件末尾调用了我的异步函数
client.loop.create_task(bot())
client.loop.create_task(bot2())
client.loop.create_task(dead())
client.run(bot.token)
【问题讨论】:
channel1
已定义。 bot.channel1
未定义。
channel1 在课堂机器人class bot: channel1=xxx
你做了self.channel1
吗?
嗯,我不知道这是什么意思,在哪里我必须这样做?
你想在哪里使用bot.channel1
?在方法内部?
【参考方案1】:
channel1 是非类型对象,因为我在 bot 准备好之前定义了
await client.wait_until_ready()
channel1=client.get_channel(id)
【讨论】:
以上是关于discord.py,在没有 on_message() 事件的情况下通过通道 id 发送消息?的主要内容,如果未能解决你的问题,请参考以下文章
在 discord.py 中,on_message 不会为一个公会触发
discord.py bot:on_message 检测机器人等待发送()消息
与 on_message 事件有关的 Discord py Cog 问题,不起作用