Я пытался сделать это сам, но, похоже, не работает. Это был единственный способ, о котором я мог думать.

bot1 = commands.Bot(command_prefix='!')
bot2 = commands.Bot(command_prefix='?')

...

bot1.run('token')
bot2.run('token')

Изменить: вот пример типа команд, которые я хочу сделать.

py = commands.Bot(command_prefix='py')
js = commands.Bot(command_prefix='js')

@py.command("if")
async def py_if(ctx):
  ctx.send("if <cond>:")

@js.command("if")
async def js_if(ctx):
  ctx.send("if (<cond>){  }")

py.run('token')
js.run('token')

В этом примере несколько префиксов позволят вам использовать разные префиксы для определенных языков.

0
TetraPengwin 3 Май 2021 в 02:52

1 ответ

Лучший ответ

Я нашел это в документации discord.py:

Префикс команды - это то, что содержание сообщения должно изначально содержать для вызова команды. Этот префикс может быть либо строкой, указывающей, каким должен быть префикс, либо вызываемым, который принимает бота в качестве первого параметра и discord.Message в качестве второго параметра и возвращает префикс. Это сделано для облегчения использования «динамических» командных префиксов. Этот вызываемый объект может быть либо обычной функцией, либо сопрограммой.

Также вы можете использовать набор строк префикса. Например:

import random

bot = commands.Bot(command_prefix=('!', '?'))


@bot.command(name='random')
async def my_random(ctx):
    await ctx.send(random.random())


bot.run(TOKEN)

Посетите документацию

РЕДАКТИРОВАТЬ: Из ссылки документации:

Префикс команды также может быть итеративным из строк, указывающих, что следует использовать несколько проверок префикса, и первая из них будет соответствовать префиксу вызова. Вы можете получить этот префикс через Context.prefix. Во избежание путаницы не допускаются пустые итерации.

0
Roman Gerasimov 3 Май 2021 в 00:18