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)
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 + ' 这种模块~请好好检查输入的模块名~')
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,游戏特工名或者等级产生变化时请及时更新您的个人信息。' )
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()
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')
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)
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 + '活动已成功创建')
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')
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')
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] + ' 活动喵~')
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('好的大熊!你继续睡吧')
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] + ' 活动,无法添加。')
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')
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')
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')
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()
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')
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'
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 + '的项目喵')
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 + '活动,不需要退出喵~')
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')
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')
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) + '的活动')
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 + '活动,请耐心等待进一步通知')
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)
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自己慢慢看吧~' )
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')
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()
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='活动不存在或者你并不是本活动的主办者喵。')
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) + ' 成功转达消息')