python - Discord.py 你能不能用# 使进入特定频道的say 命令可用?
问题描述
我正在为一个不和谐的机器人发出一个说命令,并且在大多数情况下一切正常。我想做的是一个人可以在任何频道中使用的命令,它会在被告知发送它的频道中发送委托的消息。这一切都有效,这是我的代码:
async def say(self, ctx, channelname, *, message):
"""Make the bot say whatever you want it to say"""
channel = discord.utils.get(ctx.guild.channels, name=channelname)
await channel.send(message)
但是,我的问题是,预期的不和谐服务器中的每个频道在频道名称前都有一个表情符号,因此使用不和谐功能要容易得多,如果您键入 # 可以单击频道名称。但是每当我这样做并用# 发送它时,它仍然会抛出这个错误代码:
AttributeError: NoneType object has no attribute “send”
有谁知道我该如何解决这个问题?
提前致谢!
解决方案
最好使用 ids (正如您在之前的评论中提到的)。您可以使用channel = bot.get_channel(channel_id)
获取通道对象,然后调用channel.send()
它。简单地获取频道不需要任何意图。您只需要确保机器人有权访问该通道并有权在该处发送。
推荐阅读
- javascript - 为随机生成的数字设置最小值
- javascript - 递归和条件混淆
- node.js - 在 Jenkins 中使用 node.js 和 ANSIcolor 插件
- python-3.x - For循环在某个范围内相乘
- c - scanf 总是打印输入的数字
- c++ - bin_search 在 C++ 中返回一个包含 15 个元素的数组
- java - 使用 LibGDX IOS 在 Android Studio 中编译时出错
- css - 如何在wordpress的类别标题中隐藏鼠标悬停代码?
- javascript - 检查json键是否是复杂对象javascript
- angular - 错误类型错误:无法读取未定义的属性“getUsers”