Создание Discord-бота на Python. Часть 1
- суббота, 18 июля 2020 г. в 00:30:20
Версия Python: 3.8.2
Версия discord.py: 1.3.3
Приветствую, хабровчане и другие пользователи интернета. Сегодня я начну цикл статей, посвящённых созданию Discord-бота с помощью библиотеки discord.py. Мы рассмотрим создание как и примитивного бота, как и "продвинутого" бота с модулями. В этой статье мы сделаем стандартную команду и ещё одну небольшую команду. Начнём!
Для того, чтобы добавить бота на сервер нужно создать свое приложение и во вкладке General Information скопировать Client ID.
Здесь заменяем CLID на ранее скопированный Client ID.
https://discordapp.com/oauth2/authorize?&client_id=CLID&scope=bot&permissions=8
Во вкладке Bot создаём бота и копируем токен.
Устанавливаем саму библиотеку.
pip install discord
Создаём файл config.py (так удобнее), и создаём там словарь.
settings = {
'token': 'Ваш токен',
'bot': 'Имя бота',
'id': Client ID бота, без кавычек,
'prefix': 'Префикс бота'
}
Создаём main-файл, название может быть любое.
Импортируем библиотеки и наш файл конфига:
import discord
from discord.ext import commands
from config import settings
Создаём "тело" бота, название может быть любое:
bot = commands.Bot(command_prefix = settings['prefix']) # Так как мы указали префикс в settings, обращаемся к словарю с ключом prefix.
Начинаем писать основной код.
@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
async def hello(ctx): # Создаём функцию и передаём аргумент ctx.
author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.
await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.
В конце запускаем бота с помощью:
bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена
import discord
from discord.ext import commands
from config import settings
bot = commands.Bot(command_prefix = settings['prefix'])
@bot.command() # Не передаём аргумент pass_context, так как он был нужен в старых версиях.
async def hello(ctx): # Создаём функцию и передаём аргумент ctx.
author = ctx.message.author # Объявляем переменную author и записываем туда информацию об авторе.
await ctx.send(f'Hello, {author.mention}!') # Выводим сообщение с упоминанием автора, обращаясь к переменной author.
bot.run(settings['token']) # Обращаемся к словарю settings с ключом token, для получения токена
Должно получится так:
Сделаем вывод случайных картинок с лисами
Для этого импортируем еще пару библиотек:
import json
import requests
Приступим к написанию команды.
@bot.command()
async def fox(ctx):
response = requests.get('https://some-random-api.ml/img/fox') # Get-запрос
json_data = json.loads(response.text) # Извлекаем JSON
embed = discord.Embed(color = 0xff9900, title = 'Random Fox') # Создание Embed'a
embed.set_image(url = json_data['link']) # Устанавливаем картинку Embed'a
await ctx.send(embed = embed) # Отправляем Embed
Должно получится так:
На этом 1 часть закончена. Скоро будет опубликована 2 часть.