Это быстрое руководство по созданию шуток Chuck Norris Discord Bot, используя API Chuck Norris Jokes в Python, используя пакет Discord.py.
У меня есть видео по этому вопросу, если вы хотите проверить это
https://www.youtube.com/watch?v=-bsfhun62ym&t=17s
Здесь я демонстрирую, как создать бот Discord в JavaScript и Python Но я также объясняю все, что я знаю о Coroutines, обратных вызовах, асинхронизации/ожидании синтаксиса и циклов событий в контексте раздора, конечно. Я также кратко затронул в библиотеке Асинсио в Питоне; Некоторое отличное позднее дополнение к Python.
ОК, вернемся к бизнесу; Итак, как вы можете создать этот удивительный бот Discord?
Предварительные условия: Python 3.5 + A Discord Account A Discord Server
Тогда вам нужно будет создать бот, чтобы сделать это очень просто: 1- Подал портал разработчиков: https://discord.com/developers/applications
2- Затем нажмите на новое приложение в правом верхнем углу страницы
3- Дайте ему имя (например: Devbot)
4- Добавить бота! Итак, вы хотите, чтобы добраться до бота и добавить бота, затем нажмите «Да Сделай это!
5- Создан бот! Теперь, будьте осторожны, вы не хотите делиться токеном с кем -либо. Мы скопируем его позже для кода; И теперь нам нужно пойти на OAuth2
6- Здесь вы хотите пойти на OAuth2, чтобы дать вашему боту разрешения делать то, что вы хотите
7- Поскольку мой бот ответит на пользователя, рассказывая ему/ей шутку, мы хотим дать разрешения на отправку сообщения, а также заметили выше, я указал, что это бот
Затем скопируйте эту ссылку, откройте новую вкладку, а затем нажмите return (enter) и разрешите боту присоединиться к вашему серверу, и все готово!
Вы найдете своего бота в стороне от правой стороны экрана под вашим именем, он выйдет в интернет только тогда, когда мы наведем наш код Python.
Итак, продолжайте и установите discord.py через:
PIP установка -u Discord.py
«Событие – это то, на что вы слушаете, а затем отвечаете. Например, когда произойдет сообщение, вы получите событие об этом, на которое вы можете ответить. Discord.py – это асинхронная библиотека, поддерживает синтаксис Async/Await, который обрабатывает обратные вызовы. Обратные вызовы-это функции, которые вызываются, когда что-то еще происходит в программировании в целом, есть 2 типа потоков, отдельные потоки и многопоточное: Java и C# – это многопоточное, что означает, что они могут выполнять несколько задач без блокировки или без запуска медленного JavaScript, а Python являются однопорядными языками, что означает, что они могут выполнять только одну задачу за раз. JavaScript и Python полагаются на «асинхронное программирование» с использованием обратных вызовов и единой очереди событий, что это просто означает, что Python (а также JS) может делать только одну вещь за раз, и, возможно, вы слышали о стеке или стойке, стека, и различные задачи могут быть накапливаются в очереди в ожидании ответа для каждой задачи, [и мы говорим о задачах ввода -вывода, таких как чтение в файловой системе, отправляя HTTP -запросы на веб -сайт, чтение в базе данных], поэтому, когда задача сделан и получен ответ, эта задача удаляется из стека и выполняется к следующей задаче и так далее, и это может привести к медленной производительности, которая, естественно, приводит к блокировке, а блокировка просто означает медленный код, а код медленно Не из -за процессора, а потому, что вы делаете много IO. И решением для этого является использование CORUTINES, «Асинхронное программирование» или одновременный код, а Coroutine – это просто функция, которой предшествует Async Keyword, и Async не остановит Coroutin получить какое -то одобрение операционной системы ” ” Вот полный код:
import discord import requests import json class myClient(discord.Client): # function to login so we're going to use onready event here, remember when we said that discord.py revolves around the concept of events. async def on_ready(self): print(f' Howdy 👋 ! logged in as {client.user}'.format(client)) # function to answer message async def on_message(self, ctx): if ctx.author == client.user: return elif ctx.content.startswith('hello'): await ctx.channel.send('Howdy, friend 👋 ') elif ctx.content.startswith('make me laugh'): await ctx.channel.send('Hello! Would you like to hear a Chuck Norris joke 😛 ?') # wait_for takes an event and a check argument that is a lambda function that takes the arguments of the event - in this case message - you're waiting for and determines whether or not the new message comes from the same person who invoked the currently running command. # For example, the on_message event takes a ctx argument, so if we wanted to check the author of a message we could do: res = await client.wait_for('message', check=lambda message: ctx.author == message.author) if res.content.lower() == ('yes'): # creation and invoking the joke function here # and Python code is going to block the coroutine until tasks requested are fulfilled and returned with a response; then it will unblock and goes to the next task, and so on. async def get_joke(self): response = requests.get( 'https://api.chucknorris.io/jokes/random') joke = json.loads(response.text) # print(joke['value']) return(joke['value']) the_joke = await get_joke(self) await ctx.channel.send(the_joke) else: await ctx.channel.send('no problem!') elif ctx.content.startswith('thanks'): await ctx.channel.send('You are welcome!') elif ctx.content.startswith('salut'): await ctx.channel.send('salut mon ami :D') # Creating a client # using myClient class which represents a client connection that connects to Discord API. # This class is used to interact with the Discord WebSocket and API. client = myClient() # Run the token for connection client.run("YOUR TOKEN")
Дайте мне знать, если вам это нравится, или если у вас есть какие -либо комментарии, не стесняйтесь поделиться ими со мной. Кроме того, если вы когда -либо создавали бот -дискорд, что он делал и сколько времени вам понадобилось, чтобы его построить – ура
Оригинал: “https://dev.to/bekbrace/build-a-chuck-norris-discord-bot-in-python-discord-py-for-beginners-39e9”