-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdiscord.py
65 lines (53 loc) · 1.99 KB
/
discord.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import discord
import asyncio
from discord import app_commands, tasks
import sqlite3
from datetime import datetime, timedelta
intents = discord.Intents.default()
client = discord.Client(intents=intents)
def setup_db():
conn = sqlite3.connect('reminders.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS reminders
(reminder_id INTEGER PRIMARY KEY, user_id INTEGER, channel_id INTEGER, reminder TEXT, remind_time TIMESTAMP)''')
conn.commit()
conn.close()
@client.event
async def on_ready():
print('Bot is ready.')
remind_check.start() # start the task when the bot is ready
@client.command(name='remindme')
async def remindme(ctx, time: str, *, reminder: str):
unit = time[-1]
if unit == 'h':
remind_time = datetime.now() + timedelta(hours=int(time[:-1]))
elif unit == 'd':
remind_time = datetime.now() + timedelta(days=int(time[:-1]))
elif unit == 'm':
remind_time = datetime.now() + timedelta(days=int(time[:-1])*30)
else:
await ctx.send("Invalid time format.")
return
conn = sqlite3.connect('reminders.db')
c = conn.cursor()
c.execute("INSERT INTO reminders (user_id, channel_id, reminder, remind_time) VALUES (?, ?, ?, ?)",
(ctx.author.id, ctx.channel.id, reminder, remind_time))
conn.commit()
conn.close()
await ctx.send(f"Reminder set for {reminder} at {remind_time}")
@tasks.loop(seconds=60) # check every minute
async def remind_check():
conn = sqlite3.connect('reminders.db')
c = conn.cursor()
c.execute("SELECT * FROM reminders WHERE remind_time <= ?",
(datetime.now(),))
reminders = c.fetchall()
for row in reminders:
channel = bot.get_channel(row[2])
user = bot.get_user(row[1])
await channel.send(f"{user.mention}, you asked to be reminded: {row[3]}")
c.execute("DELETE FROM reminders WHERE reminder_id=?", (row[0],))
conn.commit()
conn.close()
setup_db()
client.run('your-bot-token')