【问题标题】:Discord.py- How to make a bot message when its pinged?Discord.py- ping 时如何发送机器人消息?
【发布时间】:2021-01-26 18:07:49
【问题描述】:

我希望当我们 ping 机器人时它会发送一条消息“是吗?”或者类似的带有表情符号的东西,但我不知道怎么做。那么有谁能告诉我命令吗?

Discord.py

【问题讨论】:

    标签: bots discord.py


    【解决方案1】:
    import discord
    
    class MyClient(discord.Client):
        async def on_ready(self):
            print('Logged on as {0}!'.format(self.user))
    
        async def on_message(self, message: discord.Message):
            print('Message from {0.author}: {0.content}'.format(message))
            mentions = [str(m) for m in message.mentions]
            if str(self.user) in list(mentions):
                text = self.text_message(message)
                if text == "":
                    print("Bot was mentioned")
                else:
                    print("Bot was mentioned with message", text)
    
    
        def text_message(self, message: discord.Message) -> str:
            raw = message.raw_mentions
            content: str = message.content
            for m in raw:
                content = content.replace(f'<@!{m}>', '')
            return content
    
    client = MyClient()
    client.run("TOKEN")
    

    请检查文档

    【讨论】:

      【解决方案2】:

      如果您不使用 cogs,请执行此操作。

      @client.event
      async def on_message(message):
          if client.user.mentioned_in(message):
              await message.channel.send("Hmmm?")
      

      文档:mentioned_in

      【讨论】:

      • 我试过这个。它的工作,但所有其他命令停止工作! :(
      • 如果您已经有一个on_message,那么只需在其末尾添加if client.user.mentioned_in(message): await message.channel.send("Hmmm?")。如果这不起作用,请向我们展示您的代码:))
      【解决方案3】:

      如前所述,可以使用on_message 来查看是否提到了bot。但是,除非您在末尾添加 await bot.process_commands(message),否则其他命令将停止工作。这将确保机器人在使用 on_message 处理程序后继续侦听命令。

      否则,如果您希望提及作为机器人的前缀,您可以在创建客户端时将其添加到前缀函数中:

      import discord
      
      from discord.ext import commands
      
      default_prefixes = ['!', '?', '.']
      
      def get_prefix(bot, message):
          return commands.when_mentioned_or(*default_prefixes)(bot, message)
      
      bot = commands.Bot(command_prefix=get_prefix, intents=discord.Intents.all())
      

      【讨论】:

        猜你喜欢
        • 2022-12-01
        • 2022-01-03
        • 1970-01-01
        • 2020-11-04
        • 2020-10-10
        • 2021-10-14
        • 2020-12-26
        • 1970-01-01
        • 2019-09-19
        相关资源
        最近更新 更多