python 我可以创建一个不带前缀的不和谐机器人吗discord.py?

mutmk8jj  于 2023-01-08  发布在  Python
关注(0)|答案(5)|浏览(123)

我在www.example.com中创建了一个不协调机器人discord.py,它不对命令做出React,只是提供信息。client = commands.Bot()如果我没有command_prefix = '',则会抛出错误。有办法绕过这个问题吗?

gz5pxeao

gz5pxeao1#

您应该使用client = discord.Client(),因为bot类添加了命令功能,这是您不想要的,这是您想要的方式,并且您仍然可以访问其他功能。

zkure5ic

zkure5ic2#

我认为您可以在不使用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)
prdp8dxp

prdp8dxp3#

嘿,如果你不想做前缀,那么你可以在你的代码中添加这个函数

def get_prefix(client, message): 
    return ""

client = commands.Bot(command_prefix=get_prefix, intents=discord.Intents.all())

在此函数中,它返回None或“”空字符串,表示没有前缀

mdfafbf1

mdfafbf14#

您可以尝试这样创建您的机器人:

client = commands.Bot(command_prefix="")

这会将您的命令前缀设置为空字符串"",因此您的机器人程序会将发送的任何消息解析为命令。

i7uaboj4

i7uaboj45#

只需传递一个空字符串作为前缀,如下所示:

client = commands.Bot(command_prefix='')

然后,您还可以覆盖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

相关问题