我在www.example.com中创建了一个不协调机器人discord.py,它不对命令做出React,只是提供信息。client = commands.Bot()如果我没有command_prefix = '',则会抛出错误。有办法绕过这个问题吗?
gz5pxeao1#
您应该使用client = discord.Client(),因为bot类添加了命令功能,这是您不想要的,这是您想要的方式,并且您仍然可以访问其他功能。
client = discord.Client()
zkure5ic2#
我认为您可以在不使用client = commands.Bot(command_prefix="")的情况下编写这样的脚本:
client = commands.Bot(command_prefix="")
import discord class MyClient(discord.Client): async def on_ready(self): print(f'Logged in as {self.user} (ID: {self.user.id})') print('---') bot_test_channel = self.get_channel(944602051671887902) await bot_test_channel.send('Premier fichier initialisée 0.1')
对于命令:
async def on_message(self, message): if not message.content.startswith(bot_prefix): return if message.author == client.user: return print(f'Message: {message.content}') print('---') if message.content == f'{bot_prefix}version': myEmbed = discord.Embed( title='Version en cours', description= f'La version est **{version}**', color=0xFD6C9E, ) myEmbed.add_field( name='Code version', value =f'{version} v0.0.1', inline=False, ) myEmbed.add_field( name='Date prévue de prochaine version', value ='6 mars 2022', inline=False, ) myEmbed.set_footer(text=self.user) await message.channel.send(embed=myEmbed)
prdp8dxp3#
嘿,如果你不想做前缀,那么你可以在你的代码中添加这个函数
def get_prefix(client, message): return "" client = commands.Bot(command_prefix=get_prefix, intents=discord.Intents.all())
在此函数中,它返回None或“”空字符串,表示没有前缀
mdfafbf14#
您可以尝试这样创建您的机器人:
这会将您的命令前缀设置为空字符串"",因此您的机器人程序会将发送的任何消息解析为命令。
""
i7uaboj45#
只需传递一个空字符串作为前缀,如下所示:
client = commands.Bot(command_prefix='')
然后,您还可以覆盖on_message事件以不处理命令:
on_message
# This overrides the event to do nothing, but you can also put your own code in here. @client.event async def on_message(message: discord.Message): pass
5条答案
按热度按时间gz5pxeao1#
您应该使用
client = discord.Client()
,因为bot类添加了命令功能,这是您不想要的,这是您想要的方式,并且您仍然可以访问其他功能。zkure5ic2#
我认为您可以在不使用
client = commands.Bot(command_prefix="")
的情况下编写这样的脚本:对于命令:
prdp8dxp3#
嘿,如果你不想做前缀,那么你可以在你的代码中添加这个函数
在此函数中,它返回None或“”空字符串,表示没有前缀
mdfafbf14#
您可以尝试这样创建您的机器人:
这会将您的命令前缀设置为空字符串
""
,因此您的机器人程序会将发送的任何消息解析为命令。i7uaboj45#
只需传递一个空字符串作为前缀,如下所示:
然后,您还可以覆盖
on_message
事件以不处理命令: