[PYTHON] Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert

Vorwort

Ich wollte plötzlich englische Sätze übersetzen, aber ich fand es mühsam, Chrome auf meinem PC hinzuzufügen, Google Translation zu öffnen und zu tippen. Discord ist jedoch aus irgendeinem Grund immer aktiv, daher dachte ich, ich würde Discords Übersetzung BOT verwenden, aber ich hatte das Gefühl, dass das Herunterladen etwas anderes war, also entschied ich mich, es zu machen und kam hierher. Dies ist der zweite BOT in meinem Leben.

Was du machen willst

――Übersetzt Japanisch ins Englische —— Übersetzt Englisch ins Japanische

Was wurde gemacht

--Übersetzen Sie mit ! Trans [andere Zeichenfolge als Japanisch] ins Japanische

Umgebung

Vorbereitungen

Das ist leicht zu verstehen. So erstellen Sie einen einfachen Discord Bot mit Python Discord Bot schnellstes Tutorial [Python & Heroku & GitHub]

Was ist Googletrans?

Es ist eine kostenlose Bibliothek, die Sprachen mithilfe der Google Übersetzungs-API übersetzen und erkennen kann. Es ist jedoch nicht sehr stabil und kann jederzeit von Google blockiert werden. Wenn Sie also Stabilität wünschen, empfehlen wir die Verwendung der offiziellen API von Google Cloud.

Installation

pip install googletrans Sie können es mit installieren.

Erfolgreich installierte googletrans- (beliebige Version) Abgeschlossen.

Codebeispiel

Lassen Sie uns als Beispiel ein Programm erstellen, das Japanisch in Englisch konvertiert.

trans_test.py


from googletrans import Translator

translator = Translator()

japanese = translator.translate('Guten Morgen.')
print(japanese.text)
#>> Good morning.

Der von translete () zurückgegebene Wert enthält neben Text auch die Sprache der Konvertierungsquelle und die Sprache nach der Konvertierung.

trans_test.py


from googletrans import Translator

translator = Translator()

japanese = translator.translate('Guten Morgen.')
print(japanese)
#>> Translated(src=ja, dest=en, text=Good morning., pronunciation=None, extra_data="{'translat...")

Um die Sprache zu erkennen, setzen Sie den Satz oder das Wort, das Sie erkennen möchten, in die Klammern von detect ().

trans_test.py


from googletrans import Translator

translator = Translator()

detect = translator.detect('Guten Morgen.')
print(detect)
#>> Detected(lang=ja, confidence=1.0)

Die beiden englischen Buchstaben nach lang sind der Name der Sprache, und Vertrauen ist die Genauigkeit.

Was für eine nützliche Bibliothek! !! Dieses Mal werde ich mit dieser Bibliothek einen Übersetzungs-BOT erstellen.

Erstellen eines BOT

Legen Sie zuerst das fertige Produkt ab.

main.py


import discord
from googletrans import Translator

TOKEN = 'Token verdeckt'

client = discord.Client()
translator = Translator()

@client.event
async def on_ready():
    print('--------------')
    print('Sie sind jetzt angemeldet')
    print(client.user.name)
    print(client.user.id)
    print('--------------')

@client.event
async def on_message(message):
    if message.author.bot:
        return

    if message.content.startswith('!trans'):
        say = message.content
        say = say[7:]
        if say.find('-') == -1:
            str = say
            detact = translator.detect(str)
            befor_lang = detact.lang
            if befor_lang == 'ja':
                convert_string = translator.translate(str, src=befor_lang, dest='en')
                embed = discord.Embed(title='Konvertierungsergebnis', color=0xff0000)
                embed.add_field(name='Befor', value=str)
                embed.add_field(name='After', value=convert_string.text, inline=False)
                await message.channel.send(embed=embed)
            else:
                convert_string = translator.translate(str, src=befor_lang, dest='ja')
                embed = discord.Embed(title='Konvertierungsergebnis', color=0xff0000)
                embed.add_field(name='Befor', value=str)
                embed.add_field(name='After', value=convert_string.text, inline=False)
                await message.channel.send(embed=embed)
        else:
            trans, str = list(say.split('='))
            befor_lang, after_lang = list(trans.split('-'))
            convert_string = translator.translate(str, src=befor_lang, dest=after_lang)
            embed = discord.Embed(title='Konvertierungsergebnis', color=0xff0000)
            embed.add_field(name='Befor', value=str)
            embed.add_field(name='After', value=convert_string.text, inline=False)
            await message.channel.send(embed=embed)

    if message.content.startswith('!detect'):
        say = message.content
        s = say[8:]
        detect = translator.detect(s)
        m = 'Die Sprache dieser Zeichenfolge ist wahrscheinlich' + detect.lang + 'ist.'
        await message.channel.send(m)

client.run(TOKEN)

Ich weiß nicht, ob es kompliziert aussieht, aber es ist sehr einfach zu tun.

!trans ~ Wenn die Anweisung mit beginnt, entfernen Sie die Anweisung ! Trans und ein Zeichen mit halber Breite aus der Anweisung. ↓ Erkennen Sie die Sprache des Satzes mit detect (). ↓ Wenn die Sprache Japanisch ist, übersetzen Sie sie ins Englische, andernfalls übersetzen Sie sie ins Japanische.

② (Vorausgesetzt, dass! Trans bereits entfernt wurde) !trans [A]-[B]-[C] Zum Zeitpunkt der Anweisung ist A der Sprachname vor der Konvertierung, B der Sprachname nach der Konvertierung und C eine Zeichenfolge. ↓ Übersetzen Sie C aus der Sprache A, B, C nach B.

!detect ~ Wenn der Befehl mit beginnt, entfernen Sie den Befehl "! Detect" und ein Zeichen mit halber Breite aus dem Befehl. ↓ Erkennen und Ausgeben der Sprache des Satzes mit erkennen ()

Das ist alles für die gesamte Bewegung. Es gibt Stellen, an denen "embedded ~" an verschiedenen Stellen geschrieben ist, aber dies ist notwendig, um es durch Einbetten zum Sprechen zu bringen, wenn es mit Discord gesprochen wird. Das Einbetten scheint leichter zu erkennen zu sein.

Ergebnis

An dem zu übersetzenden Inhalt ist nichts auszusetzen. Ich wähle es angemessen.

Französisch 翻訳6.PNG

Ich konnte alles umsetzen, was ich versuchte!

Fazit ・ Eindruck

Ich denke, die Übersetzung ist der Google-Übersetzung unterlegen, aber ich bin zufrieden, weil ich das tun konnte, was ich versucht habe. Da ich noch am Anfang bin, möchte ich viele Dinge tun, z. B. Voice-Chat, Mitgliedergewinnung und Kombination mit Web-Scraping.

Machen wir es, weil jeder glücklich ist, BOT zu machen! !!

Wenn Sie einen Fehler machen oder Verbesserungen haben, können Sie mir auf Twitter etwas mitteilen.

Recommended Posts

Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe mit PyQt einen einfachen Texteditor erstellt
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Ich habe versucht, ein System zu erstellen, das nur gelöschte Tweets abruft
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Ich habe eine Web-API erstellt
Ich habe versucht, eine Blockchain zu implementieren, die tatsächlich mit ungefähr 170 Zeilen funktioniert
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Ich habe versucht, Linux mit Discord Bot zu betreiben
[Python] Ich habe versucht, eine Shiritori-KI zu erstellen, die den Wortschatz durch Schlachten verbessert
Ich habe versucht, ein Wörterbuch ohne Berücksichtigung der Groß- und Kleinschreibung zu erstellen
Ich habe versucht, eine verdächtige Person mithilfe von Geolonia-Adressdaten schnell zu einem MAP zu machen
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Erstellen Sie einen BOT, der die Discord-URL verkürzt
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
[LPIC 101] Ich habe versucht, die Befehlsoptionen zusammenzufassen, die leicht zu Fehlern führen können
Ich habe versucht, eine Memo-App zu erstellen, die Pomodoro sein kann, aber eine Reflexionsaufzeichnung
Python-Anfänger haben einen Chat-BOT erstellt, also habe ich versucht, zusammenzufassen, wie man es macht
Ich habe einen Zwietrachtbot gemacht
Ich habe versucht, es ein- und auszuschalten, indem ich "Ein Plug-In erstellen, das Leerzeichen mit Sublime Text 2 in voller Breite hervorhebt" eingestellt habe.
Ich habe versucht, Discord Bot und Gesichtserkennung für LT zu kombinieren.
Ich habe versucht, mit "Syncthing" Dateien auf mehreren PCs zu synchronisieren
Ich habe versucht, [eine bestimmte Aufgabe] mit einem Raspeltorte zu automatisieren
Ich habe versucht, einen Bot für die Ankündigung eines Wiire-Ereignisses zu erstellen
Ich habe versucht, eine Bibliothek (Common Thread) zu verwenden, die die Verwendung des Python-Threading-Pakets vereinfacht
[Git] Ich habe versucht, anhand eines konkreten Beispiels zu verstehen, wie man Git Stash verwendet.
Ich habe versucht, mit Kendra, das bei re: Invent 2019 angekündigt wurde, sofort einen Befehl zum Durchsuchen der Dokumentensuche auszuführen
Ich habe versucht, einen Generator zu erstellen, der mit Python eine C # -Containerklasse aus CSV generiert
Ich habe versucht, mit OpenCV eine Bewegungserkennungsüberwachungskamera mit einer WEB-Kamera mit Raspberry Pi herzustellen
Wie erstelle ich eine japanisch-englische Übersetzung?
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
Ich habe versucht, BigQuery-Daten mit Jupyter Lab mit GCP zu visualisieren
[Einführung] Ich möchte mit Python einen Mastodon-Bot erstellen! 【Anfänger】
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Einfaches Japanisch ⇒ Ich habe versucht, ein englisches Übersetzungswerkzeug zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe versucht, eine Site zu erstellen, mit der die aktualisierten Informationen von Azure einfach angezeigt werden können
Ich habe versucht, eine SATA-Software-RAID-Konfiguration zu erstellen, die das Betriebssystem unter Ubuntu Server startet
Ich habe versucht, ein Skript zu erstellen, das die Tweets eines bestimmten Benutzers auf Twitter verfolgt und das veröffentlichte Bild sofort speichert
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, jpholidayp über Proxy zu verwenden, um cron nur an Wochentagen auszuführen