[PYTHON] J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans

Préface

J'ai soudainement voulu traduire des phrases en anglais, mais j'ai trouvé gênant d'ajouter du chrome sur mon PC, d'ouvrir la traduction Google et de taper. Cependant, Discord est toujours activé pour une raison quelconque, alors j'ai pensé que j'utiliserais le BOT de traduction de Discord, mais j'ai senti que le télécharger tel quel était quelque chose de différent, alors j'ai décidé de le faire et je suis venu ici. C'est le deuxième BOT de ma vie.

Chose que tu veux faire

―― Traduit le japonais en anglais

Ce qui a été fait

--Translate en japonais avec ! Trans [chaîne de caractères autre que japonais]

environnement

Préparation préalable

--Environnement dans lequel Python peut être utilisé

C'est facile à comprendre. Comment créer un simple Discord Bot avec Python Tutoriel le plus rapide de Discord Bot [Python & Heroku & GitHub]

Qu'est-ce que googletrans

C'est une bibliothèque gratuite qui peut traduire et détecter des langues à l'aide de l'API Google Translation. Cependant, il n'est pas très stable et peut être bloqué par Google à tout moment, donc si vous voulez de la stabilité, nous vous recommandons d'utiliser l'API officielle de Google Cloud.

Installation

pip install googletrans Vous pouvez l'installer avec.

Googletrans installé avec succès- (toute version) Est terminé.

Exemple de code

À titre d'exemple, créons un programme qui convertit le japonais en anglais.

trans_test.py


from googletrans import Translator

translator = Translator()

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

En plus du texte, la valeur renvoyée par translete () inclut la langue de la source de conversion et la langue après la conversion.

trans_test.py


from googletrans import Translator

translator = Translator()

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

Pour détecter la langue, mettez la phrase ou le mot que vous souhaitez détecter entre parenthèses de detect ().

trans_test.py


from googletrans import Translator

translator = Translator()

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

Les deux lettres anglaises après lang sont le nom de la langue et la confiance est la précision.

Quelle bibliothèque utile! !! Cette fois, je vais faire un BOT de traduction en utilisant cette bibliothèque.

Créer un BOT

Tout d'abord, posez le produit fini.

main.py


import discord
from googletrans import Translator

TOKEN = 'Jetons face cachée'

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

@client.event
async def on_ready():
    print('--------------')
    print('Vous êtes maintenant connecté')
    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='Résultat de la conversion', 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='Résultat de la conversion', 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='Résultat de la conversion', 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 = 'La langue de cette chaîne est probablement' + detect.lang + 'est.'
        await message.channel.send(m)

client.run(TOKEN)

Je ne sais pas si ça a l'air compliqué, mais c'est très simple à faire.

!trans ~ Lorsque l'instruction commence par, supprimez l'instruction «! Trans» et un caractère demi-largeur de l'instruction. ↓ Détectez la langue de la phrase avec detect (). ↓ Si la langue est le japonais, traduisez-la en anglais, sinon traduisez-la en japonais.

② (En supposant que! Trans a déjà été supprimé) !trans [A]-[B]-[C] Au moment de l'instruction, A est le nom de la langue avant la conversion, B est le nom de la langue après la conversion et C est une chaîne de caractères. ↓ Traduire C du langage A, B, C au langage B.

!detect ~ Lorsque la commande commence par, supprimez la commande «! Détecter» et un caractère demi-largeur de la commande. ↓ detect () pour détecter la langue de la phrase et la sortir

C'est tout pour le mouvement global. Il y a des endroits où ʻembed ~ ʻest écrit à divers endroits, mais c'est nécessaire pour l'incorporation lorsque l'on parle sur Discord. L'intégration semble être plus facile à voir.

résultat

Je n'ai pas l'intention de traduire. Je le choisis de manière appropriée.

--Détection de la langue Japonais 翻訳5.PNG

français 翻訳6.PNG

J'ai pu mettre en œuvre tout ce que j'essayais de faire!

Conclusion ・ Impression

Je pense que la traduction est inférieure à la traduction de Google, mais je suis satisfait parce que j'ai pu faire ce que j'essayais de faire. Je n'en suis qu'au début, donc j'ai beaucoup de choses à faire, comme le chat vocal, la création de membres et la combinaison avec le web scraping.

Faisons-le parce que tout le monde est heureux de faire BOT! !!

Si vous faites une erreur ou avez des améliorations, n'hésitez pas à me le dire sur Twitter.

Recommended Posts

J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai créé un éditeur de texte simple en utilisant PyQt
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
J'ai essayé de créer un système qui ne récupère que les tweets supprimés
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai créé une API Web
J'ai essayé de mettre en œuvre une blockchain qui fonctionne réellement avec environ 170 lignes
J'ai essayé de créer un LINE BOT "Sakurai-san" avec API Gateway + Lambda
J'ai essayé d'utiliser Linux avec Discord Bot
[Python] J'ai essayé de créer une IA Shiritori qui améliore le vocabulaire grâce aux batailles
J'ai essayé de créer une fonction de dictionnaire insensible à la casse
J'ai essayé de faire MAP rapidement une personne suspecte en utilisant les données d'adresse Geolonia
J'ai essayé de faire un "putain de gros convertisseur de littérature"
Créez un BOT qui raccourcit l'URL Discord
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
[LPIC 101] J'ai essayé de résumer les options de commande qui sont faciles à faire une erreur
J'ai essayé de faire une application mémo qui peut être pomodoro, mais un enregistrement de réflexion
Les débutants en Python ont créé un chat BOT alors j'ai essayé de résumer comment le faire
J'ai fait un robot discord
J'ai essayé de l'activer / de le désactiver en définissant "Créer un plug-in qui met en évidence les espaces pleine largeur avec Sublime Text 2".
J'ai essayé de combiner Discord Bot et la reconnaissance faciale-pour LT-
J'ai essayé d'utiliser "Syncthing" pour synchroniser des fichiers sur plusieurs PC
J'ai essayé d'automatiser [une certaine tâche] à l'aide d'une tarte à la râpe
J'ai essayé de créer un bot pour annoncer un événement Wiire
J'ai essayé d'utiliser une bibliothèque (fil conducteur) qui rend le package de threads Python plus facile à utiliser
[Git] J'ai essayé de faciliter la compréhension de l'utilisation de git stash en utilisant un exemple concret.
J'ai essayé de créer une commande de recherche de documents slack à l'aide de Kendra annoncée immédiatement à re: Invent 2019
J'ai essayé de créer un générateur qui génère une classe conteneur C # à partir de CSV avec Python
J'ai essayé de créer une caméra de surveillance à détection de mouvement avec OpenCV en utilisant une caméra WEB avec Raspberry Pi
Comment faire une traduction japonais-anglais
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
[Python] J'ai essayé d'implémenter un tri stable, alors notez
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de numériser le tampon estampé sur papier en utilisant OpenCV
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé d'obtenir une liste de noms AMI en utilisant Boto3
J'ai essayé d'enregistrer une station sur la plateforme IoT "Rimotte"
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai essayé de visualiser les données BigQuery à l'aide de Jupyter Lab avec GCP
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] Japonais simple ⇒ J'ai essayé de créer un outil de traduction en anglais
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de faire une étrange citation pour Jojo avec LSTM
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai essayé de créer un site qui permet de voir facilement les informations mises à jour d'Azure
J'ai essayé de créer une configuration RAID logicielle SATA qui démarre le système d'exploitation sur Ubuntu Server
J'ai essayé de créer un script qui retrace les tweets d'un utilisateur spécifique sur Twitter et enregistre l'image publiée à la fois
J'ai essayé d'utiliser Azure Speech to Text.
J'ai essayé d'utiliser jpholidayp sur proxy pour exécuter cron uniquement en semaine