[PYTHON] Erstellen Sie ganz einfach einen TalkBot mit Discord.py und der Talk-API von A3RT (pya3rt).

Am Nachmittag habe ich verschiedene Dinge mit einer bestimmten Discord.py ausprobiert. Auf Discords Server sagte dies eine Person. ** "Ich will reden !!" ** Talking-Kun ist ein TalkBot auf Discord, der nett zu mir ist und für eine Weile keine andere Person zum Reden hat ... Übrigens gab es eine kostenlose API namens A3RT. Okay, lass es uns schaffen.

Vorsichtsmaßnahmen vorerst.

Die Person, die dies schreibt, ist ein Anfänger in Python, daher kann es einige Punkte geben, die nicht erreicht werden können. Zu diesem Zeitpunkt bitte freundlich sein .... Dies ist auch Qiitas erster Beitrag. Ich freue mich darauf, mit Dir zu arbeiten. ~~ Das ist eine Katze. ~~

Umgebung

In Bezug auf die Umgebung ist es wie der Artikel in Qiita erheblich vom Bot entfernt. Wenn Sie sich also darauf beziehen, passen Sie es bitte an Ihre eigene Umgebung an.

Was du machen willst

Wenn Sie auf einem bestimmten Kanal sprechen, reagiert dieser bedingungslos → Senden Sie es mit Talk API von A3RT zurück.

Dann tu es.

Ausgabe des A3RT API KEY

Sie können einen API-SCHLÜSSEL einfach ausgeben, indem Sie eine E-Mail von der Seite TalkAPI senden. Ich werde es später verwenden.

Schreiben Sie den Inhalt des Bots.

run.py so.

run.py


import discord
from discord.ext import commands
import asyncio
import os
import sys
import traceback

loop = asyncio.get_event_loop()

airlinia_token = os.environ['AIRLINIA_DISCORD_TOKEN'] #Umgebungsvariablen ~~.
technetium_token = os.environ['TECHNETIUM_DISCORD_TOKEN']

class DISCORDBOT(commands.Bot):
    #Konstrukteur.
    def __init__(self, command_prefix, cogs, **options):
        #Führen Sie dies aus, indem Sie einen Wert an den Konstruktor der Superklasse übergeben.
        super().__init__(command_prefix, **options)
        #Im Zahnradordner.Lesen Sie die py-Datei.
        for cog in os.listdir(f'./{cogs}'):
            if cog.endswith('.py'):
                try:
                    self.load_extension(f'{cogs}.{cog[:-3]}')
                except Exception:
                    traceback.print_exc()

    async def on_ready(self): #Rufen Sie an, wenn Sie bereit sind.
        print(f"""Sie sind jetzt angemeldet.
        ------\nBot-Kontoübersicht\n Benutzername:{self.user.name}\n Benutzer-ID:{self.user.id}
        ------\nDiscord.Version von py\n{discord.__version__}
        ------\Python-Version\n{sys.version}
        ――――――――――――――――――――――――――――――""")
        await self.change_presence(activity=discord.Game(name=f'{self.command_prefix}¦{self.user.name} - by.amazakura0804'))

if __name__ == '__main__':
    airlinia = DISCORDBOT(command_prefix='al!', cogs='airlinia_cogs', loop=loop)
    airlinia_task = loop.create_task(airlinia.start(airlinia_token))

    technetium = DISCORDBOT(command_prefix='te!', cogs='technetium_cogs', loop=loop)
    technetium_task = loop.create_task(technetium.start(technetium_token))

    loop.run_until_complete(technetium_task)
    loop.run_until_complete(airlinia_task)
    loop.close()

Unter Bezugnahme auf Bot-Entwicklung mit dem Bot Commands Framework von discord.py. TOKEN ist eine Umgebungsvariable. Bitte ändern Sie hier je nach Umgebung. Ich werde nicht mehr als einen bewegen. Ich denke, dass diese Art von Gefühl genug ist.

run.py


import discord
from discord.ext import commands
import asyncio
import os
import sys
import traceback

token = os.environ['DISCORD_TOKEN']

class HogeBot(commands.Bot):
    #Konstrukteur.
    def __init__(self, command_prefix, cogs, **options):
        #Führen Sie dies aus, indem Sie einen Wert an den Konstruktor der Superklasse übergeben.
        super().__init__(command_prefix, **options)
        #Im Zahnradordner.Lesen Sie die py-Datei.
        for cog in os.listdir(f'./{cogs}'):
            if cog.endswith('.py'):
                try:
                    self.load_extension(f'{cogs}.{cog[:-3]}')
                except Exception:
                    traceback.print_exc()

    async def on_ready(self): #Rufen Sie an, wenn Sie bereit sind.
        print(f"""Sie sind jetzt angemeldet.
        ------\nBot-Kontoübersicht\n Benutzername:{self.user.name}\n Benutzer-ID:{self.user.id}
        ------\nDiscord.Version von py\n{discord.__version__}
        ------\Python-Version\n{sys.version}
        ――――――――――――――――――――――――――――――""")
        await self.change_presence(activity=discord.Game(name=f'{self.command_prefix}¦{self.user.name} - by.amazakura0804'))

if __name__ == '__main__':
    hogebot = HogeBot(command_prefix='!', cogs='hogebot_cogs')
    hogebot.run(token) #Bot-Token

Talk.py

Talk.py


import discord
from discord.ext import commands
import asyncio
import os
import pya3rt

class Talk_Bot(commands.Cog):
    def __init__(self, airlinia):
        self.bot = airlinia #Erhalte den Bot.

    @commands.Cog.listener()
    async def on_message(self, message):
        if message.author.bot:  #Hängen Sie die Nachricht des Bots auf
            return
        if message.channel.id == TALK_CHANNEL_ID: #Ersetzen Sie durch die KANAL-ID, die Sie entsprechend sprechen möchten.
            client = pya3rt.TalkClient(os.environ['TALK_API_KEY']) #Da dies auch eine Umgebungsvariable ist, wird sie unten weggelassen.
            content = client.talk(message.content)['results'][0]['reply']
            await message.channel.send(content) #Senden Sie eine Antwortnachricht

def setup(airlinia):
    airlinia.add_cog(Talk_Bot(airlinia))

Ja. A3RT ist ungerade. Versuchen Sie, den A3RT-API-SCHLÜSSEL auf eine Umgebungsvariable anzuwenden oder direkt einzufügen. Mit nur diesem Code ...

image.png

Yay. Gott. Vielen Dank für die Rekrutierung.

Schließlich

Durch die Verwendung verschiedener APIs, einschließlich A3RT, wird das Spektrum der möglichen Aktionen erheblich erweitert. Es gibt viele andere Dinge, die interessant erscheinen, deshalb möchte ich sie nutzen.

Recommended Posts

Erstellen Sie ganz einfach einen TalkBot mit Discord.py und der Talk-API von A3RT (pya3rt).
Erstellen Sie die CRUD-API mit der Fast API
Erstellen wir eine REST-API mit SpringBoot + MongoDB
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie eine REST-API mit dem in Lobe und TensorFlow Serving erlernten Modell.
Erstellen Sie mit GitHub Pages einen Pseudo-REST-API-Server
Erstellen Sie mithilfe der Twitter-Streaming-API einen Echtzeit-Bot für die automatische Antwort
Tornado - Erstellen wir eine Web-API, die JSON problemlos mit JSON zurückgibt
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Erstellen Sie mit turicreate eine API, die Daten aus einem Modell zurückgibt
Erstellen Sie einen einfachen geplanten Stapel mit Dockers Python Image und parse-crontab
[Python] Sprechen mit OpenJTalk und Talk API (bis zur Sprachausgabe)
[Python] Ich habe eine REST-API mit AWS API Gateway und Lambda geschrieben.
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
Ich habe einen Musik-Bot mit discord.py und der Google Drive-API erstellt (getestet mit Docker → bereitgestellt für Heroku).
Erstellen Sie ein verschachteltes Wörterbuch mit defaultdict
Erstellen Sie eine API mit hug mit mod_wsgi
Erstellen Sie mit Boost.Python einen C-Sprach-Wrapper
Erstellen Sie einen Stapel mit einer Warteschlange und eine Warteschlange mit einem Stapel (von LetCode / Implement Stack using Queues, Implement Queue using Stacks)
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt