Как создать собственного бота на Python?

Как создать собственного бота на Python Программирование и разработка

Наличие собственного сервера Discord иногда требует много работы, поэтому популярны боты, выполняющие административные функции. Такого бота легко создать самостоятельно, используя библиотеку Python discord.py и базовые знания Python.

Шаг за шагом к собственному боту Discord на Python

Прежде чем вы сможете начать программировать своего бота, вы должны создать бота Discord. Вы можете создать для этого собственное приложение на Discord. После этого ничто не помешает вашему боту Discord. Код, который вам нужен для вашего бота Discord, зависит от того, какие задачи вы хотите автоматизировать. Бот, представленный в этом руководстве, предназначен для добавления ролей на сервере Discord.

Шаг 1: Установите discord.py

При создании своего бота вы в первую очередь будете использовать библиотеку Python discord.py, поэтому вы должны сначала установить ее в своей системе. Как обычно в Python, установка выполняется с помощью pip. В Windows необходимая команда терминала выглядит так:

py -3 -m pip install -U discord.py

Шаг 2: Создайте документ Python

Создайте новый документ Python, в котором вы будете кодировать своего бота. Вы можете использовать различные редакторы кода или интегрированную среду разработки (IDE), такую ​​как Pycharm, для файла Python.

Шаг 3: Подключитесь к Discord

Сначала импортируйте библиотеку Discord в свой документ Python и установите токен бота, который вы получили при регистрации бота Discord на странице разработчика Discord. Для этого замените заполнитель на ваш индивидуальный токен бота:

import discord
TOKEN = token_placeholder

Вам нужна библиотека для взаимодействия с Discord API. Для того, чтобы вы могли подключиться к Discord, также требуется экземпляр так называемого клиентского объекта. Вы создаете это с помощью следующего кода:

client = discord.Client()

Шаг 4: Проверьте, успешно ли установлено соединение

Затем вы должны включить асинхронный метод в свой документ Python, который проверит, что подключение вашего бота к серверу Discord работает без сбоев. Для этого вы отвечаете на on_readyсобытие, определенное в API discord.py. Чтобы ваша функция работала как обработчик событий, используйте декоратор функций Python.@client.event

@client.event
async def on_ready():
    print(f'{client.user} ist mit folgenden Servern verbunden:\n')
    for server in client.guilds:
        print(f'{server.name}(id: {server.id})')

Шаг 5. Добавьте функции своему боту

API discord.py определяет событие, которое поможет вам запустить функциональность вашего бота — on_messageсобытие. Это событие запускается всякий раз, когда ваш бот Discord получает сообщение. Метод, обрабатывающий это событие, должен сначала проверить, от какого отправителя пришло сообщение, а затем выполнить нужный функционал — в нашем случае добавить роли.

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('!add_role'):
        # Rollenname herausfinden
        role_name = message.content.split(' ')[1]

        # entsprechende Discord-Rolle suchen
        role = discord.utils.get(message.guild.roles, name=role_name)

        # Überprüfung, ob die Rolle existiert
        if role is None:
            await message.channel.send(f'Role "{role_name}" existiert nicht)
            return

        # Zuweisung der Rolle
        await message.author.add_roles(role)
        await message.channel.send(f'Rolle "{role_name}" wurde hinzugefuegt zu {message.author}')

Во-первых, функция проверяет, получено ли сообщение от самого бота Discord. В этом случае функция завершается returnс оператором.

Читайте также:  Как обеспечить надежное хеширование паролей для защиты ваших данных

На втором этапе содержание сообщения изучается более тщательно. Если он начинается со строки !add_role, бот интерпретирует ее как команду. Это означает, что пользователи сервера !add_roleдолжны запускать запросы к боту Discord со строкой. Конечно, вы можете использовать любую строку символов в качестве команды. Однако рекомендуется убедиться, что это строки символов, которые не встречаются в естественном языке.

Из сообщения, которое бот интерпретирует как правильную команду, с помощью функции Pythonsplit() узнаётся имя нужной роли. На следующем этапе выполняется поиск соответствующей роли на вашем сервере. Вы можете messageиспользовать для этой цели объект, который содержит различную информацию о вашем сервере под пунктом.message.guild

Если роль не существует и, следовательно, имеет значение «Нет», выводится сообщение об ошибке и функция завершается returnс оператором. В противном случае роль будет назначена соответствующим образом. Здесь используется функция add_rolesиз библиотеки dicord.py, которая messageтакже определена на объекте.

Оцените статью
Блог о программировании
Добавить комментарий