这就是我现在所拥有的,它确实每 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
错误。
答案 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'))