コード例 #1
0
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
コード例 #2
0
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 '肚子餓了...'
コード例 #3
0
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):
コード例 #4
0
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
コード例 #5
0
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:
コード例 #6
0
ファイル: spam.py プロジェクト: Asperger/PCRD-DiscordBot
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]
コード例 #7
0
ファイル: list_spam.py プロジェクト: Asperger/PCRD-DiscordBot
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:
コード例 #8
0
ファイル: fill_for.py プロジェクト: Asperger/PCRD-DiscordBot
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:])
コード例 #9
0
ファイル: lineup.py プロジェクト: Asperger/PCRD-DiscordBot
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)
コード例 #10
0
ファイル: lineoff.py プロジェクト: Asperger/PCRD-DiscordBot
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:
コード例 #11
0
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} 錯誤或試算表格式不對'
コード例 #12
0
ファイル: set_line.py プロジェクト: Asperger/PCRD-DiscordBot
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
コード例 #13
0
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]} 權重設定失敗'
コード例 #14
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):
コード例 #15
0
ファイル: undo.py プロジェクト: Asperger/PCRD-DiscordBot
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()
コード例 #16
0
ファイル: usage.py プロジェクト: Asperger/PCRD-DiscordBot
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":
コード例 #17
0
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
コード例 #18
0
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()
コード例 #19
0
ファイル: ping.py プロジェクト: Asperger/PCRD-DiscordBot
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):