Esempio n. 1
0
def update_mod(bot, update, args):
    log(update)
    if user_date.superadmin.user_list.inornot(update.message.from_user.id):
        dolist = []
        for n in args:
            try:
                dolist.append(int(n))
            except ValueError:
                if user_date.alluser.chat_id(n) == 'unknow':
                    update.message.reply_text(
                        '小猫无法在数据库中找到用户 ' + n +
                        ' 请让他使用/start启动本猫后再试或者直接使用chat_id进行操作')
                else:
                    dolist.append(user_date.alluser.chat_id(n))
        if dolist == []:
            dolist = [update.message.from_user.id]
    else:
        dolist = [update.message.from_user.id]

    for member in dolist:
        for group in user_date.for_group[2:]:
            if group.admin.user_list.inornot(member):
                group.add(member)
        if user_date.ENL_tianjin_HQ.user_list.inornot(member):
            user_date.ENL_tianjin.add(member)
        if user_date.ENL_tianjin.ban_list.inornot(member):
            user_date.ENL_tianjin_HQ.ban(member)
        if member == update.message.from_user.id:
            text = '您的权限信息已经更新完毕喵~'
        else:
            text = user_date.alluser.username(member) + ' 的权限信息已经更新完毕喵~'
        update.message.reply_text(text)
Esempio n. 2
0
def copy(bot, update, args):
    log(update)
    if len(args) < 2:
        bot.sendMessage(update.message.from_user.id,
                        text='请按照 /copy 目标模块 导入模块 这种模式至少输入两个模块名哦~不然小猫可不知道怎么操作')
        return
    purpose = None
    for n in user_date.for_group[3:]:
        if n.name == args[0]:
            purpose = n
    if purpose is None:
        bot.sendMessage(update.message.from_user.id,
                        text='并没有 ' + args[0] + ' 这种模块哦~请好好检查输入的模块名~')
        return
    for a in args[1:]:
        do = 0
        for n in user_date.for_group[3:]:
            if n.name == a:
                for m in purpose.add(n.user_list.list):
                    if not user_date.alluser.mute_list.inornot(m[1]):
                        bot.sendMessage(
                            m[1],
                            text='您已获得 ' + m[0] + ' 模块的使用权限,请使用/help ' + m[0] +
                            ' 获取模块使用帮助\n(at ' +
                            str(update.message.date + timedelta(hours=8)) +
                            'UTC+8:00)')
                bot.sendMessage(update.message.from_user.id,
                                text=a + ' 模块用户已成功导入至 ' + purpose.name +
                                ' 模块中')
                do = 1
        if do == 0:
            bot.sendMessage(update.message.from_user.id,
                            text='并没有 ' + a + ' 这种模块~请好好检查输入的模块名~')
Esempio n. 3
0
def enl(bot, update, args):
    log(update)
    try:
        agentname = args[0]
        level = int(args[1])
    except (ValueError, IndexError):
        update.message.reply_text('请按照/enl 特工名 等级 的格式维护个人信息喵')
        return
    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    try:
        c.execute(
            "INSERT INTO ENL_agent(id,username,agentname,level) VALUES (?,?,?,?)",
            (update.message.from_user.id,
             '@' + update.message.from_user.username, agentname, level))
    except sqlite3.IntegrityError:
        c.execute(
            "update ENL_agent SET username=?,agentname=?,level=? WHERE id=?",
            ('@' + update.message.from_user.username, agentname, level,
             update.message.from_user.id))
    conn.commit()
    conn.close()
    update.message.reply_text(
        '您的特工信息已经维护完毕,为了社群效率,在您修改您的telegram username,游戏特工名或者等级产生变化时请及时更新您的个人信息。'
    )
Esempio n. 4
0
def event_del(bot, update, args):
    log(update)
    if args[-1] != config.keyuser:
        bot.sendMessage(update.message.from_user.id,
                        text=' 删除操作事关重大,请按照/event_del 活动编号 执行密码的格式输入喵')
        return
    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    for eventnum in args[:-1]:
        try:
            tablenum = int(eventnum)
            if tablenum == 0:
                bot.sendMessage(update.message.from_user.id,
                                text='MU申请功能可是不能删除的永久设定哦大猫,你疯了吗~')
                continue
            c.execute('SELECT eventname FROM ENL_tianjin WHERE eventnum=?',
                      (tablenum, ))
            tablename = c.fetchone()[0] + eventnum
            c.execute('DELETE FROM ENL_tianjin WHERE eventnum = ?;',
                      (tablenum, ))
            c.execute('DROP TABLE ' + tablename)
            conn.commit()
            bot.sendMessage(update.message.from_user.id,
                            text=eventnum + ' 活动已成功移除。')
        except (TypeError, ValueError):
            bot.sendMessage(update.message.from_user.id,
                            text=eventnum + ' 活动不存在喵。')
            continue
    conn.close()
Esempio n. 5
0
def iamcat(bot, update):
    log(update)
    if update.message.from_user.username == config.keyuser:
        user_date.me.add(update.message.from_user.id)
        user_date.superadmin.add(update.message.from_user.id)
        user_date.allgroup.add(update.message.from_user.id)
        update.message.reply_text('欢迎回来,我的大猫~0w0')
    else:
        update.message.reply_text('小猫我可不傻,你根本不是大猫哼哼哼~0w0')
Esempio n. 6
0
def mod(bot, update, args=[]):
    log(update)
    if args == [] or (('all' not in args) and
                      (not user_date.superadmin.user_list.inornot(
                          update.message.from_user.id))):
        change = [update.message.from_user.id]
    elif ('all' in args) and (not user_date.superadmin.user_list.inornot(
            update.message.from_user.id)):
        change = ['all']
    else:
        change = []
        for n in args:
            try:
                change.append(int(n))
            except ValueError:
                if n == 'all':
                    change.append('all')
                elif user_date.alluser.chat_id(n) == 'unknow':
                    update.message.reply_text(
                        '小猫无法在数据库中找到用户 ' + n +
                        ' 请让他使用/start启动本猫后再试或者直接使用chat_id进行操作')
                else:
                    change.append(user_date.alluser.chat_id(n))
    for m in change:
        if m == 'all':
            text = 'all mod list:\n'
            dolist = user_date.List('', [])
            for a in user_date.for_group:
                try:
                    if a.admin.user_list.inornot(update.message.from_user.id):
                        dolist.add([a.admin.name, a.name])
                    elif a.user_list.inornot(update.message.from_user.id):
                        dolist.add([a.name])
                except AttributeError:
                    continue
            dolist.add(user_date.public.namelist() + ['timer'])
            for n in dolist.list:
                text = text + n + '\n'
            text = text + 'total ' + str(dolist.len()) + ' mod'
            bot.sendMessage(update.message.from_user.id, text=text)
        else:
            text = 'all mod list for ' + user_date.alluser.username(m) + ' :\n'
            mod = 1
            for a in user_date.date_group:
                try:
                    if a.user_list.inornot(m):
                        name = a.name.ljust(20)
                        mute = ''
                        if a.mute_list.inornot(m):
                            mute = '|mute'
                        text = text + name + mute + '\n'
                        mod = mod + 1
                except AttributeError:
                    continue
            text = text + 'timer\ntotal ' + \
                str(mod) + ' mod for ' + user_date.alluser.username(m)
            bot.sendMessage(update.message.from_user.id, text=text)
Esempio n. 7
0
def create(bot, update, args):
    log(update)
    try:
        name = args[0]
    except IndexError:
        bot.sendMessage(update.message.from_user.id, text='请至少输入活动名才能创建一个活动喵')
        return
    try:
        test = int(name[0])
        bot.sendMessage(update.message.from_user.id,
                        text='活动名不可以用数字开头喵!请重新输入活动名')
        return
    except ValueError:
        pass
    try:
        if args[1] in ['open', 'HQ']:
            status = args[1]
        else:
            bot.sendMessage(update.message.from_user.id,
                            text='请输入正确的活动类型(open/HQ)喵')
    except IndexError:
        status = 'open'

    detail = str(update.message.date + timedelta(hours=8)) + ' ' + \
        user_date.alluser.username(update.message.from_user.id) + ' -- 创建活动:'
    for text in args[2:]:
        detail += text + ' '

    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    c.execute("INSERT INTO ENL_tianjin(eventname,class,detail) VALUES (?,?,?)",
              (name, status, detail))
    conn.commit()
    id = c.lastrowid
    tablename = name + str(id)
    c.execute('CREATE TABLE ' + tablename +
              ' (id INTEGER PRIMARY KEY ,holder INTEGER);')
    c.execute('INSERT INTO ' + tablename + '(id,holder) VALUES (?,1)',
              (update.message.from_user.id, ))
    conn.commit()
    conn.close()
    if status == 'open':
        for member in user_date.ENL_tianjin.user_list.list:
            if member == update.message.from_user.id:
                continue
            elif (not user_date.ENL_tianjin.mute_list.inornot(member)) and (
                    not user_date.alluser.mute_list.inornot(member)):
                bot.sendMessage(member, text='天津启蒙军开展了新的活动: ' + name)
    else:
        for member in user_date.ENL_tianjin_HQ.user_list.list:
            if member == update.message.from_user.id:
                continue
            elif (not user_date.ENL_tianjin_HQ.mute_list.inornot(member)) and (
                    not user_date.alluser.mute_list.inornot(member)):
                bot.sendMessage(member, text='天津启蒙军开展了新的秘密活动: ' + name)
        bot.sendMessage(update.message.from_user.id, text=name + '活动已成功创建')
Esempio n. 8
0
def notice(bot, update, args):
    log(update)
    try:
        text = ''
        for a in args[1:]:
            text = text + a
        if text == '':
            bot.sendMessage(update.message.from_user.id,
                            text='小猫我可不知道你想说什么~0w0')
            return
        for n in user_date.for_group:
            if args[0] == n.name and n.admin.user_list.inornot(
                    update.message.from_user.id):
                for m in n.user_list.list:
                    if not (n.mute_list.inornot(m)
                            or user_date.alluser.mute_list.inornot(a)):
                        bot.sendMessage(
                            m,
                            text='system notice from group ' + n.name + ':\n' +
                            text + '\n(at ' +
                            str(update.message.date + timedelta(hours=8)) +
                            'UTC+8:00)')
                bot.sendMessage(update.message.from_user.id, text='通知完毕')
                return
        bot.sendMessage(update.message.from_user.id,
                        text='喵?并没有名叫' + args[0] + '的模块块哦?0w0')
    except AttributeError:
        text = ''
        for a in args[1:]:
            text = text + a + ' '
        if text == '':
            bot.sendMessage(update.message.from_user.id,
                            text='小猫我可不知道你想说什么~0w0')
            return
        noticelist = user_date.List('', [])
        templist = user_date.List('', [])
        for n in user_date.for_group:
            if args[0] == n.name and n.admin.user_list.inornot(
                    update.message.from_user.id):
                noticelist.name = n.name
                for m in n.list:
                    templist.add(m.user_list.list)
                    templist.remove(m.mute_list.list)
                    noticelist.add(templist.list)
                    templist.clean()
                noticelist.remove(user_date.alluser.mute_list.list)
                break
        for a in noticelist.list:
            bot.sendMessage(a,
                            text='system notice from class ' +
                            noticelist.name + ':\n' + text + '\n(at ' +
                            str(update.message.date + timedelta(hours=8)) +
                            'UTC+8:00)')
    except IndexError:
        bot.sendMessage(update.message.from_user.id,
                        text='请按照‘模块名 通知内容’的格式好好输入,不然小猫我可帮不了你~0w0')
Esempio n. 9
0
def apply_refuse(bot, update, type, date=[]):
    log(update)
    for n in user_date.for_group:
        if type == n.name and n.admin.user_list.inornot(
                update.message.from_user.id):
            n.apply_refuse(date)
            bot.sendMessage(update.message.from_user.id, text='用户移出完毕')
            return
    bot.sendMessage(update.message.from_user.id,
                    text='喵?并没有名叫' + type + '的模块块哦?0w0')
Esempio n. 10
0
def group_link(bot, update, args):
    log(update)
    if update.message.chat_id > 0:
        update.message.reply_text('本功能只能在组群中使用喵~')
        return
    try:
        tablenum = int(args[0])
    except (ValueError, IndexError):
        update.message.reply_text('请按照/group_link 活动编号 的格式好好输入喵~')
        return
    admin_list = []
    for member in update.effective_chat.get_administrators():
        admin_list.append(member.user)
    if update.message.from_user not in admin_list:
        update.message.reply_text('只有群管理员才可以使用本功能喵~')
        return
    if not tablenum:
        update.message.reply_text('本活动不支持绑定组群功能喵~')
        return
    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    c.execute('SELECT eventname FROM ENL_tianjin WHERE groupid=?',
              (update.message.chat_id, ))
    try:
        al_event = c.fetchone()[0]
        update.message.reply_text('本群已经绑定了 ' + al_event + ' 活动了,不能重复绑定喵~')
        return
    except TypeError:
        pass
    c.execute('SELECT eventname FROM ENL_tianjin WHERE eventnum=?',
              (tablenum, ))
    result = c.fetchone()
    try:
        tablename = result[0] + args[0]
    except TypeError:
        update.message.reply_text('活动不存在或者您并不是主办者喵~')
        return
    c.execute('SELECT holder FROM ' + tablename + ' WHERE id=?',
              (update.message.from_user.id, ))
    holder_check = c.fetchone()
    try:
        if not holder_check[0]:
            update.message.reply_text('活动不存在或者您并不是主办者喵~')
            return
    except TypeError:
        update.message.reply_text('活动不存在或者您并不是主办者喵~')
        return
    c.execute('''UPDATE ENL_tianjin SET groupid=? WHERE eventnum = ?''', (
        update.message.chat_id,
        tablenum,
    ))
    conn.commit()
    c.close()
    update.message.reply_text('本群已经成功绑定 ' + result[0] + ' 活动喵~')
Esempio n. 11
0
def untimer(bot, update, user_data):
    """Removes the job if the user changed their mind"""
    log(update)
    if 'job' not in user_data:
        update.message.reply_text('诶?你有让我叫你吗???')
        return

    job = user_data['job']
    job.schedule_removal()
    del user_data['job']

    update.message.reply_text('好的大熊!你继续睡吧')
Esempio n. 12
0
def holder(bot, update, args):
    log(update)
    try:
        tablenum = int(args[0])
        test = args[1]
    except (ValueError, IndexError):
        update.message.reply_text('请按照/holder 活动编号 用户 的格式输入命令喵~')
        return
    try:
        conn = sqlite3.connect('jarviscatbot.db')
        c = conn.cursor()
        c.execute(
            '''SELECT eventname,class FROM ENL_tianjin WHERE eventnum=?''',
            (tablenum, ))
        result = c.fetchone()
        if result[1] == 'close':
            bot.sendMessage(update.message.from_user.id,
                            text=result[0] + '活动已结束,无法添加其他主办者喵。')
            c.close()
            return
        tablename = result[0] + args[0]
        c.execute('SELECT holder FROM ' + tablename + ' WHERE id=?',
                  (update.message.from_user.id, ))
        if not c.fetchone()[0]:
            bot.sendMessage(update.message.from_user.id,
                            text='活动不存在或者你并不是本活动的主办者喵。')
            c.close()
            return
    except TypeError:
        bot.sendMessage(update.message.from_user.id,
                        text='活动不存在或者你并不是本活动的主办者喵。')
        c.close()
        return
    members = trans_chat_id(update, args[1:])
    for member in members:
        c.execute('SELECT count(*) FROM ' + tablename + ' WHERE id=?',
                  (member, ))
        try:
            if c.fetchone()[0]:
                c.execute('UPDATE ' + tablename + ' SET holder=1 WHERE id=?',
                          (member, ))
                conn.commit()
                bot.sendMessage(update.message.from_user.id,
                                text='已成功添加 ' +
                                user_date.alluser.username(member) + ' 为 ' +
                                result[0] + ' 活动的主办者。')
                bot.sendMessage(member,
                                text='您已被添加为 ' + result[0] + ' 活动的主办者。')
        except TypeError:
            bot.sendMessage(update.message.from_user.id,
                            text=user_date.alluser.username(member) +
                            ' 还并未报名参加 ' + result[0] + ' 活动,无法添加。')
Esempio n. 13
0
def recovery(bot, update, args):
    log(update)
    try:
        if args[0] == config.keyuser:
            user_date.recovery()
            bot.sendMessage(update.message.from_user.id,
                            text='资料已经恢复完毕,有饼干吃吗?0w0')
        else:
            bot.sendMessage(update.message.from_user.id,
                            text='资料恢复事关重大,请输入正确的执行密码执行。0w0')
    except IndexError:
        bot.sendMessage(update.message.from_user.id,
                        text='资料恢复事关重大,请输入正确的执行密码执行。0w0')
Esempio n. 14
0
def clean(bot, update, args):
    log(update)
    try:
        for n in user_date.for_group:
            if args[0] == n.name and n.admin.user_list.inornot(
                    update.message.from_user.id) and args[1] == config.keyuser:
                n.clean()
                bot.sendMessage(update.message.from_user.id, text='组群清空完毕')
                return
        bot.sendMessage(update.message.from_user.id,
                        text='喵?并没有名叫' + args[0] + '的模块块哦?0w0')
    except IndexError:
        update.message.reply_text('请按照‘模块名 执行密码’的格式好好输入,不然小猫我可帮不了你~0w0')
Esempio n. 15
0
def unban(bot, update, type, date):
    log(update)
    if date == []:
        update.message.reply_text('请按照‘模块名 用户1 用户2...’的格式好好输入,不然小猫我可帮不了你~0w0')
    else:
        for n in user_date.for_group:
            if type == n.name and n.admin.user_list.inornot(
                    update.message.from_user.id):
                n.unban(date)
                bot.sendMessage(update.message.from_user.id, text='用户解禁完毕')
                return
        bot.sendMessage(update.message.from_user.id,
                        text='喵?并没有名叫' + type + '的模块块哦?0w0')
Esempio n. 16
0
def showlist(bot, update, args):
    log(update)
    if args == []:
        update.message.reply_text('请按照/showlist 活动编号 的格式输入命令喵~')
        return
    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    for eventnum in args:
        try:
            tablenum = int(eventnum)
            c.execute('SELECT eventname FROM ENL_tianjin WHERE eventnum=?',
                      (tablenum, ))
            name = c.fetchone()[0]
            tablename = name + eventnum
            if tablenum == 0 and user_date.ENL_tianjin_HQ.user_list.inornot(
                    update.message.from_user.id):
                pass
            else:
                c.execute(
                    'SELECT id FROM ' + tablename + ' WHERE id=? and holder=1',
                    (update.message.from_user.id, ))
                holder = user_date.alluser.username(c.fetchone()[0])
            c.execute('SELECT username,holder,agentname,level,' + tablename +
                      '.id FROM ' + tablename +
                      ' LEFT OUTER JOIN ENL_agent ON ENL_agent.id= ' +
                      tablename + '.id')
            result = c.fetchall()
            text = 'agent list for the event ' + eventnum + ' :' + name + '\n' + \
                'username'.ljust(20) + '|' + '身份'.ljust(6) + '|' + '特工名'.ljust(17) + '|' + '等级'
            for m in result:
                if m[0]:
                    username = m[0]
                    agentname = m[2]
                elif user_date.alluser.username(m[4]) == 'unknow':
                    username = str(m[4])
                    agentname = 'unknow'
                else:
                    username = user_date.alluser.username(m[4])
                    agentname = 'unknow'
                if m[1]:
                    status = 'holder'
                else:
                    status = ''
                text += '\n' + username.ljust(20) + '|' + status.ljust(
                    8) + '|' + agentname.ljust(20) + '|' + str(m[3])
            bot.sendMessage(update.message.from_user.id, text=text)
        except (TypeError, ValueError):
            bot.sendMessage(update.message.from_user.id,
                            text=eventnum + ' 活动不存在或者你并不是本活动的主办者喵。')
            continue
    conn.close()
Esempio n. 17
0
def sts(bot, update, args):
    log(update)
    if len(args) > 0:
        message = ''
        for n in args:
            message = message + n + ' '
        update.message.reply_text('已成功为您留言给summy')
        bot.sendMessage(user_date.love.user_list.list[0],
                        text='from @' + update.message.from_user.username +
                        ':' + message + '(at ' +
                        str(update.message.date + timedelta(hours=8)) +
                        'UTC+8:00)')
    else:
        update.message.reply_text('你怎么比小猫还笨!你都没留言我怎么帮你转达。0w0')
Esempio n. 18
0
def atbash(bot,update,args):
    log(update)
    try:
        code=enter_code(args)
    except KeyError:
        update.message.reply_text('无法找到待解码数据,请直接输入待解码以开始工作喵~')
    try:
        dofor = args[1]
        if dofor in ['n','a']:
            try:
                num=int(args[2])
            except (ValueError,IndexError):
                num=9
    except IndexError:
        dofor='l'
Esempio n. 19
0
def data_del(bot, update, args):
    log(update)
    if args == []:
        bot.sendMessage(update.message.from_user.id, text='请好好输入要删除的项目喵')
        return
    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    for num in args:
        try:
            n = int(num)
            c.execute('''DELETE FROM ENL_HQ WHERE id=?''', (n, ))
            conn.commit()
            bot.sendMessage(update.message.from_user.id, text='删除成功喵')
        except (ValueError, TypeError):
            bot.sendMessage(update.message.from_user.id,
                            text='没有编号为' + num + '的项目喵')
Esempio n. 20
0
def unjoin(bot, update, args):
    log(update)
    if len(args) == 0:
        update.message.reply_text('请输入您要退出的活动的活动编号喵!')
        return
    for num in args:
        try:
            num = int(num)
            conn = sqlite3.connect('jarviscatbot.db')
            c = conn.cursor()
            c.execute(
                'SELECT eventnum,eventname,class FROM ENL_tianjin WHERE eventnum = ?;',
                (num, ))
            result = c.fetchone()
            conn.close()
            status = result[2]
            eventname = result[1]
            tablename = result[1] + str(result[0])
        except (IndexError, ValueError, TypeError):
            bot.sendMessage(update.message.from_user.id,
                            text='并没有编号为' + str(num) + '的活动')
            continue
        if status == 'close':
            bot.sendMessage(update.message.from_user.id, text='你不能退出已经结束的活动哦~')
            continue
        elif status == 'HQ' and (
                not user_date.ENL_tianjin_HQ.user_list.inornot(
                    update.message.from_user.id)):
            bot.sendMessage(update.message.from_user.id,
                            text='并没有编号为' + str(num) + '的活动')
            continue
        conn = sqlite3.connect('jarviscatbot.db')
        c = conn.cursor()
        c.execute('SELECT COUNT(*)  FROM ' + tablename + ' WHERE id = ?',
                  (update.message.from_user.id, ))
        if c.fetchone()[0]:
            c.execute('DELETE FROM ' + tablename + ' WHERE id = ?;',
                      (update.message.from_user.id, ))
            conn.commit()
            conn.close()
            bot.sendMessage(update.message.from_user.id,
                            text='您已成功退出' + eventname +
                            '活动,如果改变心意请重新使用/join参加喵~')
        else:
            bot.sendMessage(update.message.from_user.id,
                            text='您并没有加入' + eventname + '活动,不需要退出喵~')
Esempio n. 21
0
def add(bot, update, type, date=[]):
    log(update)
    for n in user_date.for_group:
        if type == n.name and n.admin.user_list.inornot(
                update.message.from_user.id):
            for m in n.add(date):
                if not user_date.alluser.mute_list.inornot(m[1]):
                    bot.sendMessage(
                        m[1],
                        text='您已获得 ' + m[0] + ' 模块的使用权限,请使用/help ' + m[0] +
                        ' 获取模块使用帮助\n(at ' +
                        str(update.message.date + timedelta(hours=8)) +
                        'UTC+8:00)')
            bot.sendMessage(update.message.from_user.id, text='用户授权完毕')
            return
    bot.sendMessage(update.message.from_user.id,
                    text='喵?并没有名叫' + type + '的模块块哦?0w0')
Esempio n. 22
0
def printlist(bot, update, args):
    log(update)
    try:
        for n in user_date.for_group:
            if args[0] == n.name and n.admin.user_list.inornot(
                    update.message.from_user.id):
                try:
                    bot.sendMessage(update.message.from_user.id,
                                    text=n.printlist(args[1]))
                except IndexError:
                    bot.sendMessage(update.message.from_user.id,
                                    text=n.printlist('user'))
                return
        bot.sendMessage(update.message.from_user.id, text='喵?并没有你说的这种模块块哦?0w0')
    except IndexError:
        bot.sendMessage(update.message.from_user.id,
                        text='喵?不输入模块名我可不知道你想看什么哦!0w0')
Esempio n. 23
0
def detail(bot, update, args):
    log(update)
    if len(args) == 0:
        update.message.reply_text('请输入您要了解的活动的活动编号喵!')
        return
    for num in args:
        try:
            num = int(num)
            conn = sqlite3.connect('jarviscatbot.db')
            c = conn.cursor()
            c.execute(
                'SELECT eventname,class,detail FROM ENL_tianjin WHERE eventnum = ?;',
                (num, ))
            result = c.fetchone()
            conn.close()
            name = result[0]
            status = result[1]
            conn = sqlite3.connect('jarviscatbot.db')
            c = conn.cursor()
            c.execute(
                'SELECT count(*) FROM ' + name + str(num) + ' WHERE id = ?;',
                (update.message.from_user.id, ))
            asker = c.fetchone()[0]
            c.close()
            if not asker:
                if status == 'HQ' and (
                        not user_date.ENL_tianjin_HQ.user_list.inornot(
                            update.message.from_user.id)):
                    bot.sendMessage(update.message.from_user.id,
                                    text='并没有编号为' + str(num) + '的活动')
                    continue
                else:
                    n = 0
                    while n < len(result[2]):
                        if result[2][n] == '\n':
                            detail = result[2][:n]
                            break
                        else:
                            n += 1
            else:
                detail = result[2]
            bot.sendMessage(update.message.from_user.id,
                            text=name + '\n' + detail)
        except (IndexError, ValueError, TypeError):
            bot.sendMessage(update.message.from_user.id,
                            text='并没有编号为' + str(num) + '的活动')
Esempio n. 24
0
def join(bot, update, args):
    log(update)
    if len(args) == 0:
        update.message.reply_text('请输入您要加入的活动的活动编号喵!')
        return
    for num in args:
        try:
            num = int(num)
            conn = sqlite3.connect('jarviscatbot.db')
            c = conn.cursor()
            c.execute(
                'SELECT eventnum,eventname,class FROM ENL_tianjin WHERE eventnum = ?;',
                (num, ))
            result = c.fetchone()
            conn.close()
            status = result[2]
            eventname = result[1]
            tablename = result[1] + str(result[0])
        except (IndexError, ValueError, TypeError):
            bot.sendMessage(update.message.from_user.id,
                            text='并没有编号为' + str(num) + '的活动')
            continue
        if status == 'close':
            bot.sendMessage(update.message.from_user.id,
                            text='活动:' + eventname + ' 已经结束,无法继续报名')
            continue
        elif status == 'HQ' and (
                not user_date.ENL_tianjin_HQ.user_list.inornot(
                    update.message.from_user.id)):
            bot.sendMessage(update.message.from_user.id,
                            text='并没有编号为' + str(num) + '的活动')
            continue
        conn = sqlite3.connect('jarviscatbot.db')
        c = conn.cursor()
        try:
            c.execute('INSERT INTO ' + tablename + '(id,holder) VALUES (?,0)',
                      (update.message.from_user.id, ))
            conn.commit()
            conn.close()
            bot.sendMessage(update.message.from_user.id,
                            text='您已成功报名' + eventname + '活动,请耐心等待进一步通知')
            detail(bot, update, [num])
        except sqlite3.IntegrityError:
            bot.sendMessage(update.message.from_user.id,
                            text='您已经报名过' + eventname + '活动,请耐心等待进一步通知')
Esempio n. 25
0
def event(bot, update, args):
    log(update)
    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    if user_date.ENL_tianjin_HQ.user_list.inornot(update.message.from_user.id):
        if len(args) > 0 and args[0] == 'all':
            c.execute('SELECT eventnum,eventname,class FROM ENL_tianjin')
        else:
            c.execute(
                '''SELECT eventnum,eventname,class FROM ENL_tianjin WHERE class!='close' '''
            )
    else:
        if len(args) > 0 and args[0] == 'all':
            c.execute(
                '''SELECT eventnum,eventname,class FROM ENL_tianjin WHERE class!='HQ' '''
            )
        else:
            c.execute(
                '''SELECT eventnum,eventname,class FROM ENL_tianjin WHERE class!='HQ' AND class!='close' '''
            )
    list = c.fetchall()
    text = '活动编号'.ljust(6) + '|' + '活动名'.ljust(27) + \
        '|' + '状态'.ljust(8) + '|' + '参与情况'
    for e in list:
        c.execute('SELECT holder FROM ' + e[1] + str(e[0]) + ' WHERE id=? ',
                  (update.message.from_user.id, ))
        try:
            if c.fetchone()[0]:
                join = 'holder'
            else:
                join = 'join'
        except TypeError:
            join = ''

        if len(e[1]) < 15:
            name_just = 30
            for l in e[1]:
                if l >= u'\u4e00' and l <= u'\u9fa5':
                    name_just -= 1
        else:
            name_just = 15

        text = text + '\n' + str(e[0]).ljust(10) + \
            '|' + e[1].ljust(name_just) + '|' + e[2].ljust(10) + '|' + join
    bot.sendMessage(update.message.from_user.id, text=text)
Esempio n. 26
0
def start(bot, update):
    log(update)
    if user_date.me.user_list.inornot(update.message.from_user.id):
        update.message.reply_text('欢迎回来,我的大猫~0w0')
    elif user_date.love.user_list.inornot(update.message.from_user.id):
        update.message.reply_text(
            '你好,我最爱的summy,我是你的专属小猫,我会辅助coffeecaty照顾你,说出你的需求,我会尽量满足。小猫还小,会的很少,请有耐心的慢慢教小猫长大哦~'
        )
    else:
        if update.message.from_user.first_name is not None:
            update.message.reply_text(
                '您好,' + update.message.from_user.first_name +
                ',我是辅助coffeecaty照顾summy的专属小猫,主要负责帮caty秀恩爱,当然我也可以提供一些其他服务,但是项目太多我介绍不过来,请用/help自己慢慢看吧~'
            )
        else:
            update.message.reply_text(
                '您好,@' + update.message.from_user.username +
                ',我是辅助coffeecaty照顾summy的专属小猫,主要负责帮caty秀恩爱,当然我也可以提供一些其他服务,但是项目太多我介绍不过来,请用/help自己慢慢看吧~'
            )
Esempio n. 27
0
def apply(bot, update, args):
    log(update)
    try:
        for m in args:
            do = 0
            for n in user_date.for_group:
                if m == n.name:
                    do = 1
                    if n.ban_list.inornot(update.message.from_user.id):
                        bot.sendMessage(update.message.from_user.id,
                                        text='喵?您已被管理员封禁' + m +
                                        '模块权限,如有疑问请联系模块管理员,小猫我可不知道发生了什么哦!0w0')
                    elif n.user_list.inornot(update.message.from_user.id):
                        bot.sendMessage(update.message.from_user.id,
                                        text='喵?小猫我仔细检查了一下觉得您已经有' + m +
                                        '模块的权限了哦!0w0')
                    elif n.apply_list.inornot(update.message.from_user.id):
                        bot.sendMessage(update.message.from_user.id,
                                        text='喵?您已提交过' + m +
                                        '模块权限,请耐心等候管理员的批准哦~!0w0')
                    else:
                        n.apply(update.message.from_user.id)
                        for a in n.admin.user_list.list:
                            if not (user_date.alluser.mute_list.inornot(a)
                                    or n.admin.mute_list.inornot(a)):
                                bot.sendMessage(
                                    a,
                                    text='@' +
                                    update.message.from_user.username +
                                    '向您申请使用' + m + '模块的使用权限 (at ' +
                                    str(update.message.date +
                                        timedelta(hours=8)) + 'UTC+8:00)')
                        bot.sendMessage(update.message.from_user.id,
                                        text='您的' + m +
                                        '模块权限申请小猫我已成功替您提交,请耐心等候管理员的批准哦~!0w0')
                    break
            if not bool(do):
                bot.sendMessage(update.message.from_user.id,
                                text='喵?并没有名叫' + m + '的模块块哦?0w0')
    except IndexError:
        bot.sendMessage(update.message.from_user.id,
                        text='请好好输入你要申请的模块名哦,不然小猫我可帮不了你~0w0')
Esempio n. 28
0
def reopen(bot, update, args):
    log(update)
    if args == []:
        update.message.reply_text('请按照/reopen 活动编号 的格式输入命令喵~')
        return
    conn = sqlite3.connect('jarviscatbot.db')
    c = conn.cursor()
    for event in args:
        try:
            tablenum = int(event)
            c.execute(
                'SELECT eventname,class FROM ENL_tianjin WHERE eventnum=?',
                (tablenum, ))
            result = c.fetchone()
            tablename = result[0] + event
            status = result[1]
            if status != 'close':
                bot.sendMessage(update.message.from_user.id,
                                text=event + ' 活动还没结束,无法重启喵。')
                continue
            c.execute(
                'SELECT id FROM ' + tablename + ' WHERE id=? and holder=1',
                (update.message.from_user.id, ))
            holder = user_date.alluser.username(c.fetchone()[0])
            c.execute('SELECT detail FROM ENL_tianjin WHERE eventnum = ?',
                      (tablenum, ))
            detail = c.fetchone()[0] + '\n' + str(
                update.message.date +
                timedelta(hours=8)) + ' ' + holder + ' -- 活动重启'
            c.execute(
                '''UPDATE ENL_tianjin SET class='open',detail =? WHERE eventnum = ?''',
                (detail, tablenum))
            conn.commit()
            bot.sendMessage(
                update.message.from_user.id,
                text=str(update.message.date + timedelta(hours=8)) + ' ' +
                holder + ' -- 活动重启')
        except (TypeError, ValueError):
            bot.sendMessage(update.message.from_user.id,
                            text=event + ' 活动不存在或者你并不是本活动的主办者喵。')
            continue
    c.close()
Esempio n. 29
0
def news(bot, update, args):
    log(update)
    try:
        tablenum = int(args[0])
    except (ValueError, IndexError):
        update.message.reply_text('请按照/news 活动编号 内容 的格式输入命令喵~')
        return
    news = ''
    for n in args[1:]:
        news += n + ' '
    if news == '':
        update.message.reply_text('您没有输入更新的内容喵~')
        return
    try:
        conn = sqlite3.connect('jarviscatbot.db')
        c = conn.cursor()
        c.execute('''SELECT eventname FROM ENL_tianjin WHERE eventnum=?''',
                  (tablenum, ))
        name = c.fetchone()[0]
        tablename = name + args[0]
        c.execute('SELECT id FROM ' + tablename + ' WHERE id=? and holder=1',
                  (update.message.from_user.id, ))
        holder = user_date.alluser.username(c.fetchone()[0])
        c.execute('SELECT detail FROM ENL_tianjin WHERE eventnum = ?',
                  (tablenum, ))
        detail = c.fetchone()[0] + '\n' + str(update.message.date + timedelta(
            hours=8)) + ' ' + holder + ' -- ' + news
        c.execute('UPDATE ENL_tianjin SET detail =? WHERE eventnum = ?',
                  (detail, tablenum))
        conn.commit()
        c.execute('SELECT id FROM ' + tablename + ' WHERE id!=?',
                  (update.message.from_user.id, ))
        result = c.fetchall()
        conn.close()
        for n in result:
            bot.sendMessage(n[0],
                            text=holder + ' 为您参加的活动 ' + name + ' 更新了新的内容:\n' +
                            news)
    except TypeError:
        bot.sendMessage(update.message.from_user.id,
                        text='活动不存在或者你并不是本活动的主办者喵。')
Esempio n. 30
0
def message(bot, update, args):
    log(update)
    if update.message.from_user.id in (user_date.me.user_list.list +
                                       user_date.love.user_list.list):
        try:
            user = args[:args.index(':')]
            text = args[args.index(':') + 1:]
        except ValueError:
            bot.sendMessage(
                update.message.from_user.id,
                text='请按照‘用户1 (用户2...) : 内容’的格式好好输入,小猫才能帮你发送消息哦~0w0')
        if text == []:
            bot.sendMessage(update.message.from_user.id,
                            text='小猫我可不知道你想说什么~0w0')
        user_id = []
        for n in user:
            try:
                user_id.append(int(n))
            except ValueError:
                if user_date.alluser.chat_id(n) == 'unknow':
                    update.message.reply_text(
                        '小猫无法在数据库中找到用户 ' + n +
                        ' 请让他使用/start启动本猫后再试或者直接使用chat_id进行操作')
                else:
                    user_id.append(user_date.alluser.chat_id(n))
        if user_id == []:
            bot.sendMessage(update.message.from_user.id,
                            text='小猫我可不知道你想和谁说悄悄话哦~0w0')
        text_message = ''
        for n in text:
            text_message = text_message + n + ' '
        for m in user_id:
            bot.sendMessage(
                m,
                text='message from @' + update.message.from_user.username +
                ':\n' + text_message + '\n(at ' +
                str(update.message.date + timedelta(hours=8)) + 'UTC+8:00)')
            bot.sendMessage(update.message.from_user.id,
                            text='已向 ' + user_date.alluser.username(m) +
                            ' 成功转达消息')