import re from cmds.lineoff import lineoff from utils.cmds_registry import register register(cmd="lineoff_for", alias="lineoff_for") register(cmd="lineoff_for", alias="-1f") class lineoff_for: def __init__(self): self.lineoff = lineoff() self.usage = self.lineoff.usage.replace('!-1', '!-1f @<指定對象>') self.auth_warning = '只有公會的管理員才能使用這個功能' self.playee_id = 0 def check_param(self, param): if len(param) < 1: return False else: match = re.search(R"^<@!?(\d{18})>$", param[0]) if match: self.playee_id = int(match.group(1)) else: return False return self.lineoff.check_param(param[1:]) def check_auth(self, auth): return auth['user_admin'] and self.lineoff.check_auth(auth) def run(self, user_auth, param): user_auth['user_id'] = self.playee_id
from utils.log import FileLogger from utils.spammer import set_spammer from utils.cmds_registry import register register(cmd="set_spam", alias="set_spam") register(cmd="set_spam", alias="ss") class set_spam: def __init__(self): self.usage = '!set_spam <你的指令> <佩可的反應>\n設定完成後在指令前加上驚嘆號即可使用\n指令也可以是特殊符號或表情符號\n反應也可以是特殊符號、表情符號、圖片或圖片的網址\n圖片的網址必須是直連網址,簡單來說就是以".jpg"這種檔案格式為結尾的網址\n每種指令最多可以保留5個反應' self.auth_warning = '' def check_param(self, param): return len(param) == 2 def check_auth(self, auth): return True def run(self, user_auth, param): result = set_spammer(param[0], param[1], user_auth['user_id']) if result: return '嘿嘿' else: return '肚子餓了...'
import re from cmds.lineup import lineup from utils.cmds_registry import register register(cmd="lineup_for", alias="lineup_for") register(cmd="lineup_for", alias="+1f") class lineup_for: def __init__(self): self.lineup = lineup() self.usage = self.lineup.usage.replace('!+1', '!+1f @<指定對象>') self.auth_warning = '只有公會的管理員才能使用這個功能' self.playee_id = 0 def check_param(self, param): if len(param) < 1: return False else: match = re.search(R"^<@!?(\d{18})>$", param[0]) if match: self.playee_id = int(match.group(1)) else: return False return self.lineup.check_param(param[1:]) def check_auth(self, auth): return auth['user_admin'] and self.lineup.check_auth(auth) def run(self, user_auth, param):
from utils.log import FileLogger from utils.spammer import rename_spammer from utils.cmds_registry import register register(cmd="rename_spam", alias="rename_spam") class rename_spam: def __init__(self): self.usage = '!rename_spam <你的指令> <新的指令>' self.auth_warning = '只有公會的管理員才能使用這個功能' def check_param(self, param): return len(param) == 2 def check_auth(self, auth): return auth['user_admin'] def run(self, user_auth, param): result = rename_spammer(param[0], param[1]) if not result: return '嘿嘿' else: return result
from datetime import datetime from utils.db import query from utils.timer import get_settlement_time from utils.log import FileLogger from utils.guild_member import get_guild_member_nickname from utils.cmds_registry import register register(cmd="status", alias="status") register(cmd="status", alias="stat") class status: def __init__(self): self.usage = '!status [YYYY-MM-DD]' self.auth_warning = '你不是這個公會的隊員吧?' self.date = get_settlement_time() def check_param(self, param): if len(param) > 1: return False elif len(param) == 1: try: datetime.strptime(param[0], '%Y-%m-%d') except ValueError: return False self.date = param[0] return True def check_auth(self, auth): user_nickname = get_guild_member_nickname(auth['user_id']) if user_nickname:
from utils.log import FileLogger from utils.spammer import get_spammer from utils.cmds_registry import register register(cmd="spam", alias="spam") class spam: def __init__(self): self.usage = '!spam <你的指令> 或 !<你的指令>' self.auth_warning = '' def check_param(self, param): return len(param) > 0 def check_auth(self, auth): return True def run(self, user_auth, param): return get_spammer(param[0])[0]
from utils.log import FileLogger from utils.spammer import list_spammer from utils.guild_member import get_guild_member_nickname from utils.cmds_registry import register register(cmd="list_spam", alias="list_spam") register(cmd="list_spam", alias="ls") class list_spam: def __init__(self): self.usage = '!list_spam [指令]' self.auth_warning = '' def check_param(self, param): return len(param) < 2 def check_auth(self, auth): return True def run(self, user_auth, param): cmd = '' if len(param) == 1: cmd = param[0] comment = '' spam_list = list_spammer(cmd) if cmd and spam_list: number = len(spam_list['list']) comment += f'{cmd} 共{number}種反應' if number > 1:
import re from cmds.fill import fill from utils.cmds_registry import register register(cmd="fill_for", alias="fill_for") register(cmd="fill_for", alias="ff") class fill_for: def __init__(self): self.filler = fill() self.usage = self.filler.usage.replace('!fill', '!fill_for @<代刀對象>') self.auth_warning = self.filler.auth_warning self.playee_id = 0 def check_param(self, param): if len(param) < 2: return False else: match = re.search(R"^<@!?(\d{18})>$", param[0]) if match: self.playee_id = int(match.group(1)) else: return False return self.filler.check_param(param[1:]) def check_auth(self, auth): return self.filler.check_auth(auth) def run(self, user_auth, param): user_auth['user_id'] = self.playee_id return self.filler.run(user_auth, param[1:])
from utils.log import FileLogger from utils.guild_member import get_guild_member_nickname, get_guild_channel_index from utils.line_manager import line_up from utils.cmds_registry import register register(cmd="lineup", alias="+1") class lineup: def __init__(self): self.usage = '!+1 [備註]\n備註沒有作用,你可以隨便寫或不寫,例如你要用的隊伍或一些幹話' self.auth_warning = '你不是這個公會的隊員吧?' def check_param(self, param): return True def check_auth(self, auth): user_nickname = get_guild_member_nickname(auth['user_id']) if user_nickname: return True else: return False def run(self, user_auth, param): user_id = user_auth['user_id'] channel_id = user_auth['channel_id'] user_nickname = get_guild_member_nickname(user_id) comment = ' '.join(param) if param else '' boss_id = get_guild_channel_index(channel_id) result = line_up(user_id, boss_id, comment)
from utils.log import FileLogger from utils.guild_member import get_guild_member_nickname, get_guild_channel_index from utils.line_manager import line_off from utils.cmds_registry import register register(cmd="lineoff", alias="-1") class lineoff: def __init__(self): self.usage = '!-1 [備註]\n備註沒有作用,你可以隨便寫或不寫,例如你要用的隊伍或一些幹話' self.auth_warning = '你不是這個公會的隊員吧?' def check_param(self, param): return True def check_auth(self, auth): user_nickname = get_guild_member_nickname(auth['user_id']) if user_nickname: return True else: return False def run(self, user_auth, param): user_id = user_auth['user_id'] channel_id = user_auth['channel_id'] user_nickname = get_guild_member_nickname(user_id) boss_id = get_guild_channel_index(channel_id) result = line_off(user_id, boss_id) if result:
from utils.log import FileLogger from utils.google_sheets_utils import get_sheets_id from utils.google_sheets_utils import switch_sheets as _switch_sheets from utils.cmds_registry import register register(cmd="switch_sheets", alias="switch_sheets") class switch_sheets: def __init__(self): self.usage = '!switch_sheets [sheet_ID]' self.auth_warning = '只有公會的管理員才能使用這個功能' def check_param(self, param): return param and len(param) == 1 def check_auth(self, auth): return auth['user_admin'] def run(self, user_auth, param): old_id = get_sheets_id() (new_id, start_date, player_list) = _switch_sheets(param[0]) if start_date and player_list: return f'試算表已切換為ID: {new_id}\n公會戰開始日期: {start_date.strftime("%Y/%m/%d")}' else: _switch_sheets(old_id) return f'試算表ID: {new_id} 錯誤或試算表格式不對'
from utils.log import FileLogger from utils.line_manager import set_line as _set_line from utils.cmds_registry import register register(cmd="set_line", alias="set_line") class set_line: def __init__(self): self.usage = '!set_line <幾王> <人數>\n設定正選的人數,人數為0代表不限人數' self.auth_warning = '只有公會的管理員才能使用這個功能' def check_param(self, param): return len(param) == 2 and param[0].isdigit() and param[1].isdigit() def check_auth(self, auth): return auth['user_admin'] def run(self, user_auth, param): comment = '設定失敗' boss_id = int(param[0]) amount = int(param[1]) result = _set_line(boss_id, amount) if result: if amount < 1: comment = f'已設定 {boss_id}王: 不限人數' else: comment = f'已設定 {boss_id}王: {amount}人' return comment
from utils.log import FileLogger from utils.spammer import set_spammer_weight from utils.cmds_registry import register register(cmd="set_spam_weight", alias="set_spam_weight") register(cmd="set_spam_weight", alias="ssw") class set_spam_weight: def __init__(self): self.usage = '!set_spam_weight <你的指令> [w1 w2 w3 ...]' self.auth_warning = '只有公會的管理員才能使用這個功能' def check_param(self, param): return len(param) > 1 and all(map(lambda v: v.isdigit(), param[1:])) def check_auth(self, auth): return auth['user_admin'] def run(self, user_auth, param): weight = [int(v) for v in param[1:]] result = set_spammer_weight(param[0], weight) if result: return f'{param[0]} 權重設定成功' else: return f'{param[0]} 權重設定失敗'
from utils.log import FileLogger from utils.line_manager import clear_line as _clear_line from utils.cmds_registry import register register(cmd="clear_line", alias="clear_line") class clear_line: def __init__(self): self.usage = '!clear_line [幾王]\n不指定王將清除所有排隊紀錄' self.auth_warning = '只有公會的管理員才能使用這個功能' self.boss = 0 def check_param(self, param): result = True if not param: pass elif len(param) == 1 and param[0].isdigit(): b = int(param[0]) if b > 0 and b < 6: self.boss = b else: result = False else: result = False return result def check_auth(self, auth): return auth['user_admin'] def run(self, user_auth, *param):
from utils.db import sqlur from utils.google_sheets_utils import undo as sheets_undo from utils.guild_member import get_guild_member_nickname, get_guild_channel_board from utils.cmds_registry import register register(cmd="undo", alias="undo") class undo: def __init__(self): self.usage = '!undo' self.auth_warning = '你不是這個公會的隊員吧?' def check_param(self, param): return not param def check_auth(self, auth): if auth['channel_id'] != get_guild_channel_board(): self.auth_warning = '請到登記區登記' return False user_nickname = get_guild_member_nickname(auth['user_id']) if user_nickname: return True else: return False def run(self, user_auth, param): try: description = sqlur.undo() sheets_undo()
from time import time from utils.log import FileLogger from utils.timer import timer_usage from utils.cmds_registry import register register(cmd="usage", alias="usage") register(cmd="usage", alias="help") class usage: def __init__(self): self.usage = '!help' self.auth_warning = '' def check_param(self, param): return len(param) == 0 def check_auth(self, auth): return True def run(self, user_auth, param): global timer_usage, usage_content elapsed_time = time() - timer_usage if elapsed_time < 30: return '肚子餓了...' timer_usage = time() return usage_content usage_content = { "title":
from utils.log import FileLogger from utils.spammer import clear_spammer, get_spammer from utils.cmds_registry import register register(cmd="clear_spam", alias="clear_spam") register(cmd="clear_spam", alias="cs") class clear_spam: def __init__(self): self.usage = '!clear_spam <指令> [編號]\n指定編號將移除該反應\n不指定將移除該指令及所有反應' self.auth_warning = '只有公會的管理員或作者才能使用這個功能' self.request = "" self.order = -1 def check_param(self, param): if len(param) > 0: self.request = param[0] if len(param) == 2: if param[1].isdigit(): self.order = int(param[1]) return True else: return False else: return len(param) == 1 def check_auth(self, auth): author = get_spammer(self.request, self.order)[1] return auth['user_admin'] or auth['user_id'] == author
from utils.db import sqlur from utils.google_sheets_utils import redo as sheets_redo from utils.guild_member import get_guild_member_nickname, get_guild_channel_board from utils.cmds_registry import register register(cmd="redo", alias="redo") class redo: def __init__(self): self.usage = '!redo' self.auth_warning = '你不是這個公會的隊員吧?' def check_param(self, param): return not param def check_auth(self, auth): if auth['channel_id'] != get_guild_channel_board(): self.auth_warning = '請到登記區登記' return False user_nickname = get_guild_member_nickname(auth['user_id']) if user_nickname: return True else: return False def run(self, user_auth, param): try: description = sqlur.redo() sheets_redo()
from utils.log import FileLogger from utils.guild_member import get_guild_member_nickname, get_guild_channel_index from utils.line_manager import get_line from utils.cmds_registry import register register(cmd="ping", alias="ping") class ping: def __init__(self): self.usage = '!ping [人數|list]\n不指定人數時將呼叫正選的人\n指定人數時則以此數目呼叫備選的人\nlist將列出排隊中的所有人但不呼叫' self.auth_warning = '你不是這個公會的隊員吧?' self.offset = 0 self.list_all = False def check_param(self, param): if not param: return True elif len(param) == 1: if param[0].isdigit(): self.offset = int(param[0]) return True elif param[0] == 'list': self.list_all = True return True else: return False else: return False def check_auth(self, auth):