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 将在一个频道上发送的消息(带有嵌入)转发到另一个频道以及如何确定服务器中的成员数量?

Discord.py bot 在添加反应时将消息重新发送到另一个频道中断

如何跟踪 discord.py 中发送的消息

Discord.py 如何从不和谐消息中读取 int 并将其作为变量发送到嵌入中

如何让 discord.py bot 发送到它被调用的服务器?