58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
from sqlalchemy import Table, Column, Integer, String, MetaData, insert, select
|
|
|
|
from src.channel_manager import ChannelManager
|
|
from src.db import Database
|
|
from src.plugin_base import PluginBase
|
|
|
|
meta = MetaData()
|
|
cookie_table = Table(
|
|
'Cookie',
|
|
meta,
|
|
Column('id', Integer, primary_key=True, autoincrement=True),
|
|
Column('name', String, unique=True, nullable=False),
|
|
Column('cookies', Integer, default=0),
|
|
Column('last', String, default='1999/01/01 00:00:00'),
|
|
)
|
|
c_db = Database(cookie_table, meta)
|
|
|
|
|
|
class Plugin(PluginBase):
|
|
def handle_message(self, source_nick, channel, message):
|
|
parts = message.split()
|
|
c_db.create_table('Cookie')
|
|
self.channel_manager = ChannelManager()
|
|
|
|
if parts[0].lower() == '!cookie':
|
|
if len(parts) == 1: # !cookie
|
|
self.insert_user(source_nick)
|
|
self.bot.ircsend(f'PRIVMSG {channel} :Nooooo~~')
|
|
|
|
c_db.set(source_nick, {'cookies': 1, 'last': '1999/01/01 00:00:01'})
|
|
elif len(parts) == 2: # !cookie USER
|
|
cookies = c_db.get(parts[1], 2)
|
|
|
|
if cookies == -1:
|
|
self.bot.ircsend(f'PRIVMSG {channel} :I\'ve looked everywhere for {parts[1]}, but I couldn\'t '
|
|
f'find them.')
|
|
else:
|
|
c = 'cookie'
|
|
if cookies == 0:
|
|
c = 'no cookies.'
|
|
elif cookies == 1:
|
|
c = f'{cookies} cookie.'
|
|
else:
|
|
c = f'{cookies} cookies.'
|
|
|
|
self.bot.ircsend(f'PRIVMSG {channel} :{parts[1]} currently has {c}')
|
|
|
|
def insert_user(self, user: str):
|
|
with c_db.engine.connect() as conn:
|
|
stmt = select(cookie_table).where(cookie_table.c.name == user)
|
|
cnt = len(conn.execute(stmt).fetchall())
|
|
|
|
if cnt == 0:
|
|
conn.execute((
|
|
insert(cookie_table).
|
|
values({'name': user})
|
|
))
|
|
conn.commit()
|