初心者のためのパイソン[Disord . py]で、チャックノリスdiscord botを構築してください


これはどのようにチャックノリスジョークを作成する方法についての簡単なガイドです.Pyパッケージ

あなたがそれをチェックアウトしたいならば、私は問題に関してビデオを持っています
ここでは、どのようにJavaScriptで、そして私はまた、私はcoroutines、コールバック、async/wait構文やイベントのループについて知っているすべてを説明する方法を説明します.
また、Pythonのasyncioライブラリにも簡単に触れましたPythonにいくつかの素晴らしい遅い追加.
OK、ビジネスに戻るそれでは、どのようにこの素晴らしい乱闘ボットを作成することができますか?
必須条件は:
Python 3.5 +
不和勘定
不協和サーバ
次にボットを作成する必要があります.
1 -開発者ポータルに得られます:https://discord.com/developers/applications
2 -次に、ページの右上隅にある新しいアプリケーションをクリックしてください

3 -それに名前を与える

4 -ボットを追加!
だからボットにしてボットを追加し、それをクリックしてくださいはい!

5 -ボットが作成されます!
さて、注意してください、あなたは誰とでもトークンを共有したくないです.
後でコードのコピーを行います.そして今、我々はOAuS 2に行く必要がある

6 -ここでは、あなたが望むものをするためにあなたのロボット許可を与えるために、OAuth

7 -私のボットは、彼/彼女の冗談を伝えることによって、ユーザーに対応するつもりだとして、我々はメッセージを送信する許可を与えたいと私はそれがボットであることを指定した上にも気づく

その後、そのリンクをコピーして、新しいタブのペーストを開いて、それからリターン(Enter)をヒットしてください、そして、あなたのサーバーに加わるためにボットを認可してください、そして、あなたは行くためによいです!


あなたのボットは、画面の右側にあなたの名前の下にオフラインを見つけるでしょう、それは私たちのPythonコードを入力するときにのみオンラインになります.

だから、先に行くと不和をインストールします.Py via :

pip install -U discord.py


'イベント'何かを聞いて、それに応答します.
たとえば、メッセージが発生すると、あなたが応答できるイベントを受け取ります.
不和.Pyは非同期ライブラリです.
コールバックは、一般的にプログラミングで何かが発生したときに呼び出される関数です.スレッドの種類は、シングルスレッドとマルチスレッドです.
JavaとCは、スレッディングマルチスレッドです.つまり、彼らは
JavaScriptとPythonは単一スレッド言語です.
JavaScriptとPythonはコールバックと単一のイベントキューを使用して“非同期プログラミング”に依存します.これは単にPython(およびJS)が同時に一つのことを行うことができ、スタックやスタックのキューについて聞いたことがあり、それぞれのタスクに対する応答を待っているキューに異なるタスクを蓄積することができます.[と私たちは、ファイルシステムのようなIOタスクについて、HTTPリクエストをウェブサイトに読み込み、データベースで読んでいるので、タスクが完了し、応答が受信されたときに、このタスクがスタックから削除され、次のタスクに移行したとき、このタスクは次のタスクに移動します.そして、コードはプロセッサのためではなく、多くのIOをしているので遅いです.
そして、それのための解決はCoroutinesまたは「非同期プログラミング」または並行コードを使用しています、そして、CooutineはただAsyncキーワードの前にある機能です、そして、我々がCoroutineの他の要求を待つまで、Asyncはコルーチンが実行されるのを止めます

以下は完全なコードです.
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")
あなたがそれを好むならば、私に知らせてください、あるいは、あなたにはコメントがあるならば、私と彼らを共有するために自由に感じてください.
また、あなたが今までのロボットを作成した場合は、何をやっていたし、どのようにそれをビルドするには