LoginSignup
0
0

discordのチャンネルに特定のワードが投稿されたときにDMで教えてくれるbot

Posted at

chatGPTに教えてもらいながら作りました
動機はゲーム関係です

FF14というゲームで、レアモンスターが出現したことを通知してくれるdisco鯖があるのですが、あまりに通知が多いので、botを使って特定のモンスターの時だけアナウンスできるようにしたいと思い立った次第です
※結局サーバーにbotを追加する権限がないので使うことができませんでした泣

何かに役立つかもしれないので書き記しておこうと思います

import discord

# Discordボットのトークンをここに入力します
TOKEN = 'hoge'
# 監視したい特定のワードをここに入力します
TARGET_WORD = 'hogehoge'

# 必要なIntentsを指定してClientを初期化
intents = discord.Intents.default()
intents.messages = True  # メッセージイベントを監視
intents.guilds = True    # サーバー参加・退出イベントを監視

# Discord Clientを作成
client = discord.Client(intents=discord.Intents.all())

@client.event
async def on_ready():
    print(f'We have logged in as {client.user}')

@client.event
async def on_message(message):
    # bot自身のメッセージは無視
    if message.author == client.user:
        return
    
    content = message.content.strip()

    if TARGET_WORD.lower() in content.lower():
        # DMを送信したいユーザーのID(DiscordユーザーID)を指定
        target_user_id = hogehogehoge  # ここにユーザーIDを入力

        # 特定のユーザーにDMを送信
        target_user = await client.fetch_user(target_user_id)
        if target_user:
            dm_channel = await target_user.create_dm()
            await dm_channel.send('特定のキーワードが検出されました!')

# ボットをDiscordに接続
client.run(TOKEN)

bot作成やユーザーIDの取得など面倒でしたが、ちゃんと動く用になったので嬉しかったです
私の環境ではprompt上で実行しないとエラーが出て動きませんでした

0
0
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
0
0