Initial version

This commit is contained in:
Mark Hoekveen
2020-06-29 22:58:08 +02:00
commit ec96b714e3
2 changed files with 68 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
import discord
from discord.ext import commands, tasks
import time
class TrackTimer():
def __init__(self, duration, users, channel, author):
self.end = time.time() + duration
self.users = users
self.channel = channel
self.author = author
def __str__(self):
return str(self.end - time.time()) + "s remaining."
def valid(self):
return time.time() < (self.end)
class Timer(commands.Cog):
"""Timer commands."""
def __init__(self, bot):
self.bot = bot
self.check_timers.start()
self.timers = []
@tasks.loop(seconds=2.0)
async def check_timers(self):
for timer in self.timers:
if not timer.valid():
msg = "Pencils down! "
msg += timer.author.mention + " "
for user in timer.users:
msg += user.mention + " "
await timer.channel.send(msg)
self.timers.remove(timer)
@commands.command(pass_context=True, hidden=False)
async def timer(self, ctx, minutes: int, mentions: str):
"""Starts a timer for a given number of minutes.
Tags mentioned users when timer expires.
Always tags the user that called this function"""
self.timers.append(TrackTimer(minutes*60, ctx.message.mentions, ctx.channel, ctx.author))
msg = "Okay "
for user in ctx.message.mentions:
msg += user.display_name + ", "
msg += ctx.author.display_name + "; "
msg += "your " + str(minutes) + " minutes start now."
await ctx.channel.send(msg)
def setup(bot):
bot.add_cog(Timer(bot))