如何使discord bot使用discord.py在自己的消息上触发命令?

同步271

假设用户输入的命令无效,机器人会建议使用(y / n)的命令?如果为y,则漫游器应触发建议的命令。我认为可以通过两种方式实现:

  1. 如果机器人可以根据自己的消息触发命令
  2. 如果我可以从其他齿轮调用命令

我似乎都无法正常工作。

这是一个例子,可以帮助你们更好地帮助我:

我们只说下面的代码来自一个叫做Joke.py的齿轮:

@commands.command()
async def joke(self,ctx):
await ctx.send("A Joke")

然后还有另一个齿轮“ CommandsCorrection.py”,它可以纠正用户使用的错误命令,这些命令保存在data.json文件中:

@commands.Cog.listener()
async def on_message(self, message):
    channel = message.channel
    prefix = get_prefix(self,message)
    if message.author.id == bot.id:
        return
    elif message.content.startswith(prefix):
            withoutprefix = message.content.replace(prefix,"")
            if withoutprefix in data:
                return
            else:
                try:
                    rightCommand= get_close_matches(withoutprefix, data.keys())[0]
                    await message.channel.send(f"Did you mean {prefix}%s instead? Enter Y if yes, or N if no:" %rightCommand)
                    def check(m):
                        return m.content == "Y" or "N" and m.channel == channel
                    msg = await self.client.wait_for('message', check=check, timeout = 10.0)
                    msg.content = msg.content.lower()
                    if msg.content == "y":
                        await channel.send(f'{prefix}{rightCommand}')
                    elif msg.content == "n":
                        await channel.send('You said no.')
                except asyncio.TimeoutError:
                    await channel.send('Timed Out')
                except IndexError as error:
                    await channel.send("Command Not Found. Try !help for the list of commands and use '!' as prefix.")

上面的代码中await message.channel.send(f"Did you mean {prefix}%s instead? Enter Y if yes, or N if no:" %rightCommand)建议正确的命令并await channel.send(f'{prefix}{rightCommand}')发送正确的命令。

因此,例如:

user : !jok
bot  : Did you mean !joke instead? Enter Y if yes, or N if no:
user : y
bot  : !joke **I want to trigger the command when it sends this message by reading its own message or my just calling that command/function

我应该怎么做?

帕特里克·豪

一种解决方案是将命令的逻辑与命令回调分开,并将其放入自己的协程中。然后,您可以从任何命令回调中自由调用这些协程。

因此,您应将代码变成这样:

@bot.command()
async def my_command(ctx):
    await ctx.send("Running command")

@bot.command()
async def other_command(ctx, arg):
    if arg == "command":
        await ctx.send("Running command")

变成这样的东西:

async def command_logic(ctx):
    await ctx.send("Running command")

@bot.command()
async def my_command(ctx):
    await command_logic(ctx)

@bot.command()
async def other_command(ctx, arg):
    if arg == "command":
        await command_logic(ctx)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使Discord Bot删除频道中的所有消息?

来自分类Dev

如何使机器人在Discord上编辑自己的消息

来自分类Dev

Discord.js Bot在使用命令时崩溃

来自分类Dev

Discord.py如何使用BOT获取已发送消息的ID?

来自分类Dev

如何在discord.py中删除我自己的消息?

来自分类Dev

Python Discord Bot如何将消息与列表进行比较

来自分类Dev

使Discord Bot执行Ubuntu命令

来自分类Dev

Discord Bot命令不起作用(Discord.py)

来自分类Dev

如何使Discord的bot命令不区分大小写?

来自分类Dev

如何使用discord.py重写制作Discord机器人,它可以使不是真实的bot用户

来自分类Dev

如何使用Discord.py循环功能

来自分类Dev

Discord bot发送生日消息

来自分类Dev

我需要使用discord.py rewrite更改python discord bot的头像(头像)

来自分类Dev

Discord Bot命令日志

来自分类Dev

如何使用discord.py检索以前的消息

来自分类Dev

如何使用Aiohttp制作Reddit Discord Bot

来自分类Dev

Discord bot是否可以使用Discord.py响应对特定用户的提及?

来自分类Dev

(Discord.py)如何让bot在一段时间后删除自己的消息?

来自分类Dev

如何使用Discord.py中内置的“命令菜单”?

来自分类Dev

如何使用Discord Bot发送问候消息-NodeJS

来自分类Dev

如何使用Discord Bot和python发出欢迎消息?

来自分类Dev

如何将discord.py命令插入discord命令

来自分类Dev

命令上的Discord.py命令错误消息

来自分类Dev

使用bot的Discord DM

来自分类Dev

如何使我的“ say”命令删除命令消息,同时保留机器人的消息?(discord.py)

来自分类Dev

如何使Discord Bot删除频道中的所有消息?

来自分类Dev

如何删除discord.py中的消息

来自分类Dev

如何让我的 Discord Bot 在启动后立即发送消息?

来自分类Dev

Discord.py bot 返回多条消息

Related 相关文章

  1. 1

    如何使Discord Bot删除频道中的所有消息?

  2. 2

    如何使机器人在Discord上编辑自己的消息

  3. 3

    Discord.js Bot在使用命令时崩溃

  4. 4

    Discord.py如何使用BOT获取已发送消息的ID?

  5. 5

    如何在discord.py中删除我自己的消息?

  6. 6

    Python Discord Bot如何将消息与列表进行比较

  7. 7

    使Discord Bot执行Ubuntu命令

  8. 8

    Discord Bot命令不起作用(Discord.py)

  9. 9

    如何使Discord的bot命令不区分大小写?

  10. 10

    如何使用discord.py重写制作Discord机器人,它可以使不是真实的bot用户

  11. 11

    如何使用Discord.py循环功能

  12. 12

    Discord bot发送生日消息

  13. 13

    我需要使用discord.py rewrite更改python discord bot的头像(头像)

  14. 14

    Discord Bot命令日志

  15. 15

    如何使用discord.py检索以前的消息

  16. 16

    如何使用Aiohttp制作Reddit Discord Bot

  17. 17

    Discord bot是否可以使用Discord.py响应对特定用户的提及?

  18. 18

    (Discord.py)如何让bot在一段时间后删除自己的消息?

  19. 19

    如何使用Discord.py中内置的“命令菜单”?

  20. 20

    如何使用Discord Bot发送问候消息-NodeJS

  21. 21

    如何使用Discord Bot和python发出欢迎消息?

  22. 22

    如何将discord.py命令插入discord命令

  23. 23

    命令上的Discord.py命令错误消息

  24. 24

    使用bot的Discord DM

  25. 25

    如何使我的“ say”命令删除命令消息,同时保留机器人的消息?(discord.py)

  26. 26

    如何使Discord Bot删除频道中的所有消息?

  27. 27

    如何删除discord.py中的消息

  28. 28

    如何让我的 Discord Bot 在启动后立即发送消息?

  29. 29

    Discord.py bot 返回多条消息

热门标签

归档