在 Python Discord Bot 中按名称而不是 ID 向特定文本通道发送消息
Posted
技术标签:
【中文标题】在 Python Discord Bot 中按名称而不是 ID 向特定文本通道发送消息【英文标题】:Send message to specific text channel by name not ID in a Python Discord Bot 【发布时间】:2019-02-12 04:52:59 【问题描述】:是否有与 client.get_channel('ID') 等效的命令,可让您将消息发送到特定命名的文本通道。
我的项目是一个报告系统,它将在所有员工都可以看到的员工聊天中打印报告。我希望这可以跨多个服务器工作,因此不能选择使用 ID,因为所有服务器都有不同的通道 ID。
【问题讨论】:
【参考方案1】:您可以使用discord.utils.get
遍历server.channels
并找到具有特定名称的频道:
import discord
from discord.utils import get
async def report(server, name, *args, **kwargs):
channel = get(server.channels, name=name, type=discord.ChannelType.text)
await bot.send_message(channel, *args, **kwargs)
【讨论】:
我的程序似乎不喜欢 'server.channels' 我该如何解决? @BenjaminJones 你看到了什么错误?如果您使用discord.py-rewrite,server
将改为guild
。
不使用重写。刚上床睡觉时,无法访问我的电脑。它是说它不识别“服务器”。明天我会再次使用我的电脑,并将发送更多详细信息。
您可能需要通过message.server
或ctx.message.server
来解决它,具体取决于您使用它的上下文。
不幸的是,这似乎对我不起作用。使用message.server
时,我收到一个以“TypeError: 'Server' object is not iterable”结尾的大错误有什么想法吗?以上是关于在 Python Discord Bot 中按名称而不是 ID 向特定文本通道发送消息的主要内容,如果未能解决你的问题,请参考以下文章