Discordチャンネルの過去投稿をチェックしてアラートを飛ばすPythonコード

特定Discordチャンネルの過去投稿をチェックし、特定ユーザーが投稿していなかったらアラートを飛ばすPythonコードを書きました。

Advertisement

Discordチャンネルの過去投稿をチェックしてアラートを飛ばす

Linuxでのストレージマウント状況を定期的にDiscordで受け取る

TaskerでDiscordのWebhookを利用する

GCPのCloud MonitoringでのアラートをDiscordで受け取る

私はDiscordをログ管理ツールとして利用しており、1時間ごとに動作ログが送られてきます。

その動作ログを利用して死活監視するためのコードを書きました。

DiscordAPIの用意

DiscordAPIを利用する

discord.pyを利用する

まずDiscordの各種機能を利用するためにDiscordAPIの設定を行い、discord.pyをインストールしてください。

Discordチャンネルの過去投稿をチェックしてアラートを飛ばすPythonコード

import discord, datetime

TOKEN = 'トークン'
log_channel_id = 監視対象のチャンネルID
alert_channel_id = 通知を送りたいチャンネルID

intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

author_list = ["監視対象のユーザー名"]

@client.event
async def on_ready():
    log_channel = client.get_channel(log_channel_id)
    alert_channel = client.get_channel(alert_channel_id)

    async for message in log_channel.history(limit=30):
        if(len(author_list) != 0):
            if((datetime.datetime.now(datetime.timezone.utc) - message.created_at).seconds <= 10800):
                for i, author in enumerate(author_list):
                    if(author in str(message.author)):
                        del author_list[i]
            else:
                break
        else:
            await log_channel.send("Complete")
            await client.close()

    for author in author_list:
        await alert_channel.send("Alert-" + author)

    await client.close()

client.run(TOKEN)

まずトークンや監視対象・アラート先のチャンネルIDを指定します。

監視対象のユーザー名をリストに記述して実行すれば、30件までの投稿が取得され、投稿時間が過去3時間以内のものがチェックされます。

あとはこの処理を監視したい頻度で定期実行するように設定すればOKです。

Advertisement

これで異常が発生しても3時間以内に気がつくことができます。