python
1from asyncio.tasks import wait_for 2from datetime import MAXYEAR 3import datetime 4from time import sleep 5import discord 6from discord import user 7from discord import message 8from dotenv import load_dotenv 9import os 10import time 11import main 12 13#env読み込み 14load_dotenv() 15TOKEN = os.getenv('token') 16 17# 接続に必要なオブジェクトを生成 18client = discord.Client() 19 20@client.event 21async def on_ready(): 22 print('ログインしました') 23 24 25 26@client.event 27async def on_message(message): 28 if message.author.bot: 29 return 30 31 if message.content.startswith('!join') or message.content.startswith('!j'): 32 await message.channel.send(f'Hello {message.author.mention}. Please choose timer(!timer or !t) or stopwatch(!stopwatch or !sw)') 33 34 35 def select(s): 36 global slt 37 if s.content == '!timer' or s.content == '!t': 38 slt = 'timer' 39 return slt 40 elif s.content == '!stopwatch' or s.content == '!sw': 41 slt = 'stopwatch' 42 return slt 43 return 44 45 msg = await client.wait_for('message', check=select) 46 await message.channel.send(f'{msg.author.mention} selects a {slt}.') 47 48 49 #timer 50 if slt == 'timer': 51 await message.channel.send('Please set the time : 10m(!10m) 20m(!20m) 30m(!30m)') 52 global settime 53 54 def set_time(st): 55 if st.content == '!10m': 56 global settime 57 settime = 600 58 return settime 59 elif st.content == '!20m': 60 settime = 1200 61 return settime 62 elif st.content == '!30m': 63 settime = 1800 64 return settime 65 elif st.content == '!3m': #test 3s 66 settime = 3 67 return settime 68 return 69 70 s_msg = await client.wait_for('message', check=set_time) 71 await message.channel.send(f'{s_msg.author.mention} sets {settime}m.\n Start with !start ot !s') 72 73 74 75 if message.content == '!start' or message.content == '!s': 76 await message.channel.send(f'{s_msg.author.mention} Start timer') 77 78 for i in range(settime): 79 await message.channel.send(f'{s_msg.author.mention} {settime}') 80 sleep(settime) 81 settime -= 1 82 if settime == 0: 83 await message.channel.send(f'{s_msg.author.mention} Thank you for your hard work.') 84 break 85 86 87 88 89 90 91
discordbotでタイマーを作ろうとしています。
if message.content == '!s'のところで!sを入力してもなにも帰ってきません。どのようにしたらタイマーが実装されますか。
ご教授ください
【追記】
!jでbotを読み込みます。その後、タイマー(!t)かストップウォッチ(!sw)の入力を受け取り時間を選択後(/10m)、!sで開始という流れを想定しています。
入力を受け取るとは、discord上で入力したもの(!tや!10mなど)のことで、それをもとに条件分岐を行おうと考えていました。
この場合、複数回入力を受け取ることが不可能ということでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/08 09:02
2021/08/08 12:47 編集
2021/08/09 03:26
2021/08/09 11:30
2021/08/10 00:01