Каковы различия между ботом и клиентом?

1

Я провел несколько примеров того, как сделать Bot-диск Discord Python, и я видел, что client и bot используются почти взаимозаменяемо, и я не могу найти, когда вы будете использовать его.

Например:

client = discord.Client()
@client.event
async def on_message(message):
    # we do not want the bot to reply to itself
    if message.author == client.user:
        return

    if message.content.startswith('$guess'):
        await client.send_message(message.channel, 'Guess a number between 1 to 10')

    def guess_check(m):
        return m.content.isdigit()

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run('token')

против

bot = commands.Bot(command_prefix='?', description=description)
@bot.event
async def on_ready():
    print('Logged in as')
    print(bot.user.name)
    print(bot.user.id)
    print('------')

@bot.command()
async def add(left : int, right : int):
    """Adds two numbers together."""
    await bot.say(left + right)

bot.run('token')

Я начинаю думать, что они имеют очень похожие качества и могут делать то же самое, но это личное предпочтение идти с клиентом против бота. Однако у них есть свои различия, когда у клиентов есть on_message то время как боты ждут prefix command.

Может кто-то прояснить разницу между client и bot?

Теги:
discord
discord.py

1 ответ

2
Лучший ответ

TL;DR

Просто используйте commands.Bot.


Bot - это расширенная версия Client (это в отношении подкласса). То есть. это расширение Client с включенными командами, таким образом, имя подкаталога ext/commands.

Класс Bot наследует все функции Client, что означает, что все, что вы можете делать с Client, Bot может это сделать. Наиболее заметным дополнением стало управление командой (@bot.command()), тогда как при использовании Client вам придется вручную работать с обработкой событий. Недостатком Bot является то, что вам придется изучить дополнительные функции, глядя на примеры или исходные коды, так как расширение команд мало документировано.

Если вы просто хотите, чтобы ваши боты принимали команды и обрабатывали их, было бы намного легче работать с Bot так как все обработка и предварительная обработка выполняются для вас. Но если вы хотите писать свои собственные ручки и делать сумасшедшие трюки с discord.py, то, во что бы то ни стало, используйте базовый Client.


В случае, если вы в тупик, чтобы выбрать, я рекомендую вам использовать commands.Bot с ним намного проще работать, и это в дополнение ко всему, что уже может сделать Client. И, пожалуйста, помните, что вам не нужны оба.

НЕПРАВИЛЬНО:

client = discord.Client()
bot = commands.Bot(".")

# do stuff with bot

ПРАВИЛЬНЫЙ:

bot = commands.Bot(".")

# do stuff with bot
  • 0
    Спасибо! Я работал над этим больше и просто понял, что это тоже :) И так как я могу использовать клиентские вещи с ботом, я в конечном итоге использовал бот.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню