2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】TweepyとDiscordpyを組み合わせてDiscordからツイートしてみた

Last updated at Posted at 2021-02-17

初めましての方は初めまして。カラボンです。
今回はDiscordからツイートする方法を教えていきます。

ん?なんでDiscordからツイート出来る様にしたんだって?
Discordからツイートできたら色々と便利じゃんと思ったからだよ()

とまあ、とりあえず紹介します。

1.Twitter developersのアカウントを申請する
自分で認証の仕方を調べて申請し、認証されるまで待ちましょう
https://developer.twitter.com/
ここで申請ができます。

2.Twitter Developers Portalで新しいアプリを作成する。
APIキーなどは後で使うので保存しておいてください。

3.Discord developersでbotを作る
https://discord.com/developers/applications
ここで作れます。
ここも同じくアクセストークンを保存しておいてください。

4.pythonをPCにインストール
https://www.python.org/
ここから最新バージョンをインストール。
セットアップ時にパスの設定も忘れずに。

5.Windows+Rキーでシェルを開きcmdを入力しコマンドプロンプトを開く。
だいたいこんな感じ。
windowsshell.png

6.コマンドプロンプトでpip install tweepyを入力し実行しインストールする。
このように表示されればOK。tweepy.png


pip install tweepy

コマンドはこれ。

7.同様にコマンドプロンプトでpip install discordpyを入力しインストールする。


pip install discord

これでインストール可能。
先程のように表示されればインストールが完了した証。
ちなみにdiscord for pythonはpython3以上ではないとインストールできない模様。

8.以下のライブラリのインストールが完了したらpythonの新規プログラムを作成する。
ファイルの名前は何でもヨシ!(基本は何でも良いが自分で分かりやすいファイル名にしましょう。)

9.以下のプログラムをコピペ
※アクセストークンなどは自分のに置き換えてください。

解説

・必要なものをimportでインポート。

import tweepy
import discord
import datetime
import time

・色々と代入し接続する。

now = datetime.datetime.now()

TOKEN = 'Discordのボットのトークン'
consumer_key='コンシューマキー(新:APIキー)'
consumer_key_secret='コンシューマーキーシークレット(新:APIキーシークレット)'
access_token='アクセストークン'
access_token_secret='アクセストークンシークレット'

auth = tweepy.OAuthHandler(consumer_key, consumer_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
redirect_url = auth.get_authorization_url()
print(redirect_url)

client = discord.Client()

notice_channel_id = Discordのログイン通知を表示させたいチャンネルのIDをペースト

・設定したチャンネルにログイン通知を送信。

async def greet():
    channel = client.get_channel(notice_channel_id)
    print("ログインしました。\n")
    print(now)
    await channel.send('ログインしました。')
    await channel.send(now)

@client.event
async def on_ready():
    await greet() 

・/tweetコマンドでツイートする処理。


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

    def check(msg):
        return msg.author == message.author

    if message.content == '/tweet':
        if message.author.guild_permissions.administrator:
            await message.channel.send('ツイートする内容を送信してください。')
            wait_message = await client.wait_for("message",check=check)
            api.update_status(wait_message.content)
            await message.channel.send('ツイートを送信しました。')

・最後の宣言。

client.run(TOKEN)

最終的なプログラム。

example_twitter_and_discord.py
import tweepy
import discord
import datetime
import time

now = datetime.datetime.now()

TOKEN = 'Discordのボットのトークン'
consumer_key='コンシューマキー(新:APIキー)'
consumer_key_secret='コンシューマキーシークレット(新:APIキーシークレット)'
access_token='アクセストークン'
access_token_secret='アクセストークンシークレット'

auth = tweepy.OAuthHandler(consumer_key, consumer_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
redirect_url = auth.get_authorization_url()
print(redirect_url)

client = discord.Client()

notice_channel_id = Discordのログイン通知を表示させたいチャンネルのIDをペースト

async def greet():
    channel = client.get_channel(notice_channel_id)
    print("ログインしました。\n")
    print(now)
    await channel.send('ログインしました。')
    await channel.send(now)

@client.event
async def on_ready():
    await greet() 

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

    def check(msg):
        return msg.author == message.author

    if message.content == '/tweet':
        if message.author.guild_permissions.administrator:
            await message.channel.send('ツイートする内容を送信してください。')
            wait_message = await client.wait_for("message",check=check)
            api.update_status(wait_message.content)
            await message.channel.send('ツイートを送信しました。')

client.run(TOKEN)

今はツイートが送信できるだけですが、今後アップデートし、タイムラインの表示やいいねとリツイート機能などを追加するつもりです。
バグなどがあればコメント欄で教えてください。

2021/3/25 19:23追記:

GitHubにコードをアップロードしました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?