Discord.py - 如何接收和发送消息到特定频道?
Posted
技术标签:
【中文标题】Discord.py - 如何接收和发送消息到特定频道?【英文标题】:Discord.py - how to receive and send message to specific channel? 【发布时间】:2019-12-28 17:31:55 【问题描述】:昨天我正在做一些简单的事情,一个机器人在!name Barty
的命令下会打印回Hello Barty
@bot.command()
async def name(ctx, args):
await ctx.send("hello ".format(args)
但是我现在面临的问题是机器人会响应我使用!name XXXX
的任何频道,而我想要做的是我只想对不和谐的特定频道做出反应。
我尝试过:
@bot.event
async def on_message(message):
if message.channel.id == 1234567:
@bot.command()
async def name(ctx, args):
await ctx.send("hello ".format(args)
但这完全不起作用,我没有想法,我在这里。
如何将命令发送到给定的特定通道并从那里获得响应?
【问题讨论】:
您当前在第二个 sn-p 中的内容是:“如果通道 id 等于 1234567,则定义命令name
”。但这不起作用有两个原因:没有调用函数并且命令应该是***函数(即不嵌套)。您是否打算将此“通道限制”也应用于其他命令(不仅仅是“名称”)?
@TrebledJ 正确,我计划添加可能与async def name(ctx, args):
工作方式相同的 3 个函数,但有些函数会有更多参数等 async def birthday(ctx, args, args2):
- 但是是的。我也想将“通道限制”应用于其他命令。 :)
【参考方案1】:
呃,把定义代码移出 IF 语句
@bot.command()
async def name(ctx, args):
await ctx.send("hello ".format(args)
当你做到了,你应该能够做到;
if (message.channel.id == 'channel id'):
await message.channel.send('message goes here')
else:
# handle your else here, such as null, or log it to ur terminal
还可以查看您知道的文档 - https://discordpy.readthedocs.io
一旦你发出命令,在其中创建 IF 语句。
【讨论】:
哦,在这种情况下,我将替换为 ctx.channel.id 而不是 message.channel.id? 是的,伙计,试一试,让我知道你的进展情况【参考方案2】:message.channel.id 现在需要是整数,而不是字符串,因此您不需要使用 ''
if (message.channel.id == 1234567):
await message.channel.send('message goes here')
else:
# handle your else here, such as null, or log in to ur terminal
【讨论】:
你能提供更多细节吗?也许一些代码sn-ps以上是关于Discord.py - 如何接收和发送消息到特定频道?的主要内容,如果未能解决你的问题,请参考以下文章
Discord py 将在一个频道上发送的消息(带有嵌入)转发到另一个频道以及如何确定服务器中的成员数量?
Discord.py bot 在添加反应时将消息重新发送到另一个频道中断