Discord.py-如何接收和发送消息到特定频道?

时间:2019-08-23 11:30:29

标签: python discord discord.py

昨天我正在做一个简单的事情,一个受!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)

但是那完全不起作用,我没主意了,我在这里。

如何将命令发送到给定的特定通道并从那里获得响应?

3 个答案:

答案 0 :(得分: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语句。

答案 1 :(得分:1)

在这里帮助!

bot = commands.Bot(command_prefix='$')

class MyClient(discord.Client):
  async def on_ready(self):
    guild = discord.utils.get(client.guilds, name=GUILD)

    print(
        f'{client.user} is connected to the following guild:\n'
        f'{guild.name}(id: {guild.id})\n'
    )

  @bot.command()
  async def name(self, ctx, arg):
    await ctx.send(arg)

我正在尝试使用$ name Test进行呼叫,但是它可以正常工作

答案 2 :(得分:0)

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