如何让python discord bot执行/使用命令

时间:2021-02-16 12:38:40

标签: python discord.py

这就是我现在所拥有的,它确实每 60 秒成功发送一次消息。

@tasks.loop(seconds=60)
async def mytask():
    channel = bot.get_channel(305347032569348107)
    await channel.send('Example message')

但是,当我将 await channel.send('Example message') 更改为 await channel.send('!coin') 时,它只会发送 !coin 消息,而不是执行/使用 !coin 命令。

我也试过这个 await channel.send(!coin) 但这甚至没有运行并显示 SyntaxError: invalid syntax 错误。

2 个答案:

答案 0 :(得分:1)

简单地说,请记住,您的机器人只负责将 !coin 发送到任何频道。由实际处理 !coin 命令的机器人决定是否要运行与 !coin 命令关联的任何逻辑并做出响应。
大多数不和谐机器人甚至不会考虑来自另一个机器人的“命令”,以防止滥用和机器人循环(Discord.js 的快速入门指南防止机器人执行命令,如 here 所示)。因此,最好的办法可能是自己实施 !coin 命令。

答案 1 :(得分:0)

您可以让机器人发送虚假的 !coin 消息,然后使用另一个内置命令执行 coin 命令中包含的脚本。以下是如何调整 mytask 的当前代码:

@client.command()
async def coin(ctx):
    ...  # Add coin code here

@tasks.loop(seconds=60)
async def mytask(ctx):
    # Send a fake "!coin" message
    channel = bot.get_channel(305347032569348107)
    await channel.send('!coin')

    # Execute the coin command
    await channel.invoke(client.get_command('coin'))