前提・実現したいこと
C言語やJavaScriptなどをすこし理解できているくらいの人間なのですが、
discordでBOTを作りたくて初めてPythonを触り始めました。
グループ内でお昼ご飯を注文するために以下の条件で絞り込み、お知らせしたいと考えています。
①指定した時間に
②特定のチャンネル内にいる
③お昼ご飯を注文したい人で(ロールを付与しておく)
④オンラインの人から(オフラインの人は除外)
⑤ランダムで一人代表者を決める
⑥メンションを付けてお知らせメッセージを飛ばす
試したこと・発生している問題
①と⑤はできそうなのですが、②~⑤の条件をかなえるための手法をご提案いただきたいです。
調べたところ、コマンド入力をしてメッセージを受け取ったチャンネルにおいてメンバーの取得はできましたが、
時刻をトリガーとして自動で選び、お知らせしてほしいです。
該当のソースコード
Python
1from datetime import datetime 2from discord.ext import tasks 3import random 4import asyncio 5import discord 6 7client = discord.Client() 8 9BOT_TOKEN = "hogehoge" 10CHANNEL_ID = hogehogenumber 11 12 13@client.event #ログインの確認 14async def on_ready(): 15 print('Logged in as') 16 print(client.user.name) 17 print(client.user.id) 18 print('------') 19 #ループ処理実行 20 loops.start() 21 22# 60秒に一回ループ 23@tasks.loop(seconds=60) 24async def loops(): 25 # 現在の時刻 26 now = datetime.now().strftime('%H:%M') 27 print(lunchtime) 28 channel_sent = client.get_channel(CHANNEL_ID) 29 30 #お知らせの設定時刻 31 if now == '11:00': 32 m = "今日のお昼ご飯当番を選ばなきゃ!!\n`/members` と入力してね!" 33 await channel_sent.send(m) 34 35 36@client.event 37async def on_message(message): 38 39 # メンバーのリストを取得して表示 40 if message.content == '/members': 41 s = message.channel.members 42 m = "今日のお昼ご飯当番は" + s[0].mention + "さんです!!" 43 await message.channel.send(m) 44 45 46 47 48 49# Botの起動とDiscordサーバーへの接続 50client.run(BOT_TOKEN)
わからないこと
discordにおける
・channel と guild
・member と user
など、区別がついてないなど初歩的な躓きも多いので、
もし合わせてご教授いただけますと幸いです。
補足情報(FW/ツールのバージョンなど)
数日前にインストールしたばかりのため
・Python3.8.2
・discord.py 1.3 (rewriteのほう)
だと思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/16 04:16