在 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.serverctx.message.server 来解决它,具体取决于您使用它的上下文。 不幸的是,这似乎对我不起作用。使用message.server 时,我收到一个以“TypeError: 'Server' object is not iterable”结尾的大错误有什么想法吗?

以上是关于在 Python Discord Bot 中按名称而不是 ID 向特定文本通道发送消息的主要内容,如果未能解决你的问题,请参考以下文章

我的 python discord bot 奇怪地发送消息

Discord Bot 无法识别命令名称

Discord bot 未按名称查找频道

如何在 Discord.js 中按名称查找表情符号

Python 3.6 Discord bot Bot 事件冲突

Discord bot python:discord.errors.ClientException:找不到ffmpeg