Как написать бота Discord на Python

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

Как написать Discord-бота на Python

В этом уроке вы узнаете, как создать простойDiscordробот. Если вы не знаете, что такое Discord, то, по сути, это сервис для геймеров, похожий на Slack (инструмент и сервис для совместной работы в облаке).

В Discord вы можете подключиться к нескольким серверам, и вы, должно быть, заметили, что на этих серверах много ботов. Эти боты могут делать все, от воспроизведения музыки до простого общения в чате. Я был настолько очарован этими роботами, что решил написать своего собственного на Python. Итак, давайте начнем прямо сейчас!

настраивать

Сначала нам нужно создать учетную запись бота. перейти кдискорд app.com/developers/…Затем создайте новое приложение. Дайте своему боту красивое имя и дайте ему изображение профиля.

Прокрутите вниз и нажмите «Создать пользователя бота». Когда закончите, вы получите секретный токен бота.

Вы также можете нажать, чтобы открыть токен бота.

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

код

Теперь начните наслаждаться.

Подготовьте среду

Discord.py (переписано)

Теперь мы собираемся установить переписанную версию библиотеки discord.py. discord.py на pip активно не поддерживается, поэтому установите переписанную версию библиотеки.

$ python3 -m pip install -U https://github.com/Rapptz/discord.py/archive/rewrite.zip

Проверьте, какую версию discord.py вы используете,

>>> import discord
>>> discord.__version__
'1.0.0a'

Все готово, приступаем к написанию робота.

import discord
from discord.ext import commands

если он сообщаетModuleNotFoundErrorилиImportErrorТогда что-то не так с вашей установкой discord.py.

bot = commands.Bot(command_prefix='$', description='A bot that greets the user back.')

Префикс команды — это то, что должно содержать содержимое сообщения для первоначального вызова команды.

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

Вызывается, когда клиент готов получить данные от Discordon_ready(). Обычно после того, как бот успешно авторизовался.

Теперь давайте добавим немного функциональности боту.

@bot.command()
async def add(ctx, a: int, b: int):
    await ctx.send(a+b)

@bot.command()
async def multiply(ctx, a: int, b: int):
    await ctx.send(a*b)

@bot.command()
async def greet(ctx):
    await ctx.send(":smiley: :wave: Hello, there!")

@bot.cmmands()
async def cat(ctx):
    await ctx.send("https://media.giphy.com/media/JIX9t2j0ZTN9S/giphy.gif")

Перед его запуском ваш бот должен быть добавлен на ваш сервер. Этот URL-адрес OAuth2 можно сгенерировать на странице настроек вашего бота. Перейдите на https://discordapp.com/developers, щелкните профиль своего бота и создайте URL-адрес oAuth2.

Здесь вы решаете, какие разрешения дать боту. Для нашего текущего варианта использования нам просто нужно дать разрешение на отправку сообщений.

Теперь давайте запустим бота, выполнив следующую команду в командной строке.

$ python bot.py

Теперь приступим к тестированию робота.

Существует ряд рекомендаций, которым следует следовать при создании бота Discord. Я предлагаю вам здесьGitHub.com/mehme0/диско…Прочтите всю документацию.

Есть информационная команда. Он должен предоставлять информацию о боте, например, какой фреймворк он использует, какую версию фреймворка он использует, справочные команды и, самое главное, кто его разработчики.

@bot.command()
async def info(ctx):
    embed = discord.Embed(title="nice bot", description="Nicest bot there is ever.", color=0xeee657)
    
    # 在这里提供关于您的信息
    embed.add_field(name="Author", value="<YOUR-USERNAME>")
    
    # 显示机器人所服务的数量。
    embed.add_field(name="Server count", value=f"{len(bot.guilds)}")

    # 给用户提供一个链接来请求机器人接入他们的服务器
    embed.add_field(name="Invite", value="[Invite link](<insert your OAuth invitation link here>)")

    await ctx.send(embed=embed)

discord.py автоматически сгенерируетhelpЗаказ. Итак, чтобы настроить, нам сначала нужно удалить предоставленный по умолчанию.

bot.remove_command('help')

Теперь мы можем написать пользовательскийhelpприказ. Пожалуйста, опишите здесь своего бота.

@bot.command()
async def help(ctx):
    embed = discord.Embed(title="nice bot", description="A Very Nice bot. List of commands are:", color=0xeee657)

    embed.add_field(name="$add X Y", value="Gives the addition of **X** and **Y**", inline=False)
    embed.add_field(name="$multiply X Y", value="Gives the multiplication of **X** and **Y**", inline=False)
    embed.add_field(name="$greet", value="Gives a nice greet message", inline=False)
    embed.add_field(name="$cat", value="Gives a cute cat gif to lighten up the mood.", inline=False)
    embed.add_field(name="$info", value="Gives a little info about the bot", inline=False)
    embed.add_field(name="$help", value="Gives this message", inline=False)

    await ctx.send(embed=embed)

Поздравляем! Вы только что создали бота Discord на Python.

хостинг

В настоящее время бот будет работать только онлайн, пока вы не запустите скрипт. Поэтому, если вы хотите, чтобы ваш бот работал все время, вы должны разместить его в Интернете или локально. Например в Raspberry Pi (RaspberryPi). Управляемые услуги варьируются от бесплатных (бесплатный уровень Heroku) до платных (Digital Ocean). Я запускаю своего бота на бесплатном уровне Heroku, и до сих пор не было никаких проблем.

исходный код

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='$')

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

@bot.command()
async def add(ctx, a: int, b: int):
    await ctx.send(a+b)

@bot.command()
async def multiply(ctx, a: int, b: int):
    await ctx.send(a*b)

@bot.command()
async def greet(ctx):
    await ctx.send(":smiley: :wave: Hello, there!")

@bot.command()
async def cat(ctx):
    await ctx.send("https://media.giphy.com/media/JIX9t2j0ZTN9S/giphy.gif")

@bot.command()
async def info(ctx):
    embed = discord.Embed(title="nice bot", description="Nicest bot there is ever.", color=0xeee657)
    
    # give info about you here
    embed.add_field(name="Author", value="<YOUR-USERNAME>")
    
    # Shows the number of servers the bot is member of.
    embed.add_field(name="Server count", value=f"{len(bot.guilds)}")

    # give users a link to invite thsi bot to their server
    embed.add_field(name="Invite", value="[Invite link](<insert your OAuth invitation link here>)")

    await ctx.send(embed=embed)

bot.remove_command('help')

@bot.command()
async def help(ctx):
    embed = discord.Embed(title="nice bot", description="A Very Nice bot. List of commands are:", color=0xeee657)

    embed.add_field(name="$add X Y", value="Gives the addition of **X** and **Y**", inline=False)
    embed.add_field(name="$multiply X Y", value="Gives the multiplication of **X** and **Y**", inline=False)
    embed.add_field(name="$greet", value="Gives a nice greet message", inline=False)
    embed.add_field(name="$cat", value="Gives a cute cat gif to lighten up the mood.", inline=False)
    embed.add_field(name="$info", value="Gives a little info about the bot", inline=False)
    embed.add_field(name="$help", value="Gives this message", inline=False)

    await ctx.send(embed=embed)

bot.run('NDE0MzIyMDQ1MzA0OTYzMDcy.DWl2qw.nTxSDf9wIcf42te4uSCMuk2VDa0')

Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллекти другие поля, если вы хотите видеть больше качественных переводов, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.