当前位置: 首页 > 知识库问答 >
问题:

不一致py-如何使bot消息在ping时成为服务器前缀?

空英达
2023-03-14

我想我的机器人发送该特定服务器的前缀时,它pinged(提到)。

我用谷歌搜索了它,但它不起作用(Discord.py-当它发出ping时如何生成机器人消息?)

它停止执行其他命令等。

这是我的密码

import random
import json
from discord.ext import commands
import numpy
from urllib.request import urlopen as url
from discord.ext.commands import cooldown, BucketType
#testbot
def get_prefix(client, message):
    with open('prefixes.json', 'r') as f:
        prefixes = json.load(f)
    
    return prefixes[str(message.guild.id)]

bot = commands.Bot(command_prefix = get_prefix)

@bot.event
async def on_ready():
    print(f'bots up')

@bot.event
async def on_guild_join(guild):
    with open('prefixes.json', 'r') as f:
        prefixes = json.load(f)
    
    prefixes[str(guild.id)] = '.'
    with open('prefixes.json', 'w') as f:
        json.dump(prefixes, f, indent=4)

@bot.event
async def on_guild_remove(guild):
    with open('prefixes.json', 'r') as f:
        prefixes = json.load(f)
    
    prefixes.pop(str(guild.id))
    with open('prefixes.json', 'w') as f:
        json.dump(prefixes, f, indent=4)

@bot.command()
async def setprefix(ctx, prefix):
    with open('prefixes.json', 'r') as f:
        prefixes = json.load(f)
    
    prefixes[str(ctx.guild.id)] = prefix
    with open('prefixes.json', 'w') as f:
        json.dump(prefixes, f, indent=4)
    await ctx.send(f'prefix set to: {prefix}')

@bot.command(description='check bot ping type .ping')
async def ping(ctx):
    await ctx.send(f'{round(bot.latency*1000)}ms')
@bot.event
async def on_message(message):
    if bot.user.mentioned_in(message):
        print("pinged")
        await message.channel.send('My prefix here is {0} '.format(bot.command_prefix))


bot.run('token')

改为给我发这个消息

共有1个答案

公良文彬
2023-03-14

您可以使用消息上的事件来检查何时提到您的机器人。

@bot.event
async def on_message(message):
    if bot.user.mentioned_in(message) and message.mention_everyone is False:
        prefix= get_prefix
        await message.channel.send(f"My prefix is {bot.command_prefix}")

     await bot.process_commands(message) # This line makes your other commands work.

最后一行可能是您对使用on\u message事件后停止工作的命令的解决方案。

 类似资料:
  • 如果我执行类似于它工作正常。 但是,我找不到一种方法使其适用于ping。我尝试了机器人ID和名称。我的机器人ID代码: 有人能帮忙吗?

  • 我有点不和谐。py bot和我使用此脚本使bot在被邀请到服务器时向主通道发送消息!但是,这不会向服务器发送任何内容!请帮忙!

  • 我希望我的机器人每天在特定的时间发送一条消息,运行另一个机器人的命令。例如,我想让我的机器人写“s!t"每天凌晨2点在特定频道上,并删除机器人发送的消息。我该怎么做?

  • 我的目标是创建一个discord bot,该bot使用用户发送的相同消息进行响应,如果用户发送文件,则bot将发送该文件的链接。 我可以让两个部分分开工作,但在一起我只是遇到了问题(见底部),在我目前的代码中只有独立文件发送工作,文本消息没有,如果你有文本文件,文件链接将由机器人发送但是文本不会。如果我把第二部分放在上面,那么我得到的基本上是完全相反的,只有文本被发送,没有文件。 我的代码: 底部

  • 我对discord机器人和python有点陌生,所以我在理解哪里出了问题时遇到了一些困难。基本上我想让我的机器人锁定一条消息。我找到了一个python代码的文档,上面说要使用pin_message(),所以我有: 但我得到以下错误AttributeError:“TextChannel”对象没有属性“pin_message” 当我查看Discord文档时,它会显示PUT/channels/{chan

  • 当我在twitch上开始直播时,我正试图让我的机器人向指定频道发送消息。到目前为止,我还在忙于从我的状态中获取正确的“活动”,这表示我正在流媒体。到目前为止,我得到的是: 提前感谢任何帮助!^^