Help us understand the problem. What is going on with this article?

リアクションしたら翻訳してくれるDiscordのbotをPythonで作った

こんな感じのbot
image.png

Discordでbotを作る方法は割愛。この辺りを読んで下さい。
Pythonで実用Discord Bot(discordpy解説)

ソースコード

# インストールした discord.py を読み込む
import discord
from googletrans import Translator

# 自分のBotのアクセストークンに置き換えてください
TOKEN = '[bot-token]'

# 接続に必要なオブジェクトを生成
client = discord.Client()

# 起動時に動作する処理
@client.event
async def on_ready():
    # 起動したらターミナルにログイン通知が表示される
    print('ログインしました')

@client.event
async def on_reaction_add(reaction, user):
    print("emoji-id")
    print(reaction.emoji.id)
    if reaction.count == 1:
        # 日本語訳
        if reaction.emoji.id == 687336060556017758:
            translator = Translator()
            trans_en = translator.translate(reaction.message.content, src='en', dest='ja')
            await reaction.message.channel.send(trans_en.text)


        # 英語訳
        if reaction.emoji.id == 687336087408214062:
            translator = Translator()
            trans_en = translator.translate(reaction.message.content, src='ja', dest='en')
            await reaction.message.channel.send(trans_en.text)



# Botの起動とDiscordサーバーへの接続
client.run(TOKEN)

[bot-token]はそれぞれのbotのトークンを。
[emoji-id]は反応させたい絵文字のIDを設定してあげてください(Integerです)

Google翻訳「googletrans 」

翻訳はGoogle翻訳に投げて、その結果をメッセージで返してるだけです。
emoji.idについては登録された絵文字だと、絵文字のIDが振られているので、サーバーに絵文字をセットしたら、リアクションをして、printに吐き出された絵文字IDをベタ打ちで書きましょう。
私の場合は、日本の国旗を日本語訳、アメリカの国旗を英語訳にしました。

srcが翻訳前の文章、destが翻訳後の文章なので、英訳、日本語訳以外にすることも出来ます。

完成したら、heroku辺りにデプロイして動かせば24時間体制で翻訳してくれます、便利!
ちなみに、リアクションの回数を取得する方法が分からなかったので、2リアクションすると2回翻訳します。

やり方誰か教えてください。

追記:リアクション1回にする方法教えて貰いました

if reaction.count == 1:
こちらになります、@rareshanaさんありがとうございます!

参考

Pythonで実用Discord Bot(discordpy解説)
Discord.pyでリアクションを検知する方法&バラメータ一覧
【Python】googletransを使って日本語のデータを英語に変換(翻訳)してみる

mizunana
Twitter https://twitter.com/mizunana_T YouTube https://www.youtube.com/channel/UC-rEbtxBcgRCD53DzoLVGPA?view_as=subscriber
https://vrmizunana.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした