async def set_admin(bot, event): gid = event.group_id u_priv = priv.get_user_priv(event) if u_priv >= sv.manage_priv: for m in event.message: if m.type == 'at' and m.data['qq'] != 'all': user = int(m.data['qq']) await bot.set_group_admin(group_id=gid, user_id=user, enable=True) await bot.send(event, '我好了') else: await bot.send(event, '才不听你的呢')
async def ban_user(bot, event): gid = event.group_id u_priv = priv.get_user_priv(event) if u_priv < sv.manage_priv: return msg = event.message.extract_plain_text().strip() if not msg: return try: uid = int(msg) await bot.set_group_ban(group_id=gid, user_id=uid, duration=60) await bot.send(event, '我好了') except Exception as ex: sv.logger.exception(ex)
async def unban_user(bot, event): gid = event.group_id u_priv = priv.get_user_priv(event) if u_priv < sv.manage_priv: return sid = event.self_id owner = await bot.get_group_member_info(user_id=sid, group_id=gid) role = owner['role'] if role == 'member': await bot.send(event, '咱又不是管理,你找错人了') return try: uid = int(event.message[0].data['qq']) await bot.set_group_ban(group_id=gid, user_id=uid, duration=0) await bot.send(event, '我好了') except Exception as ex: sv.logger.error(ex)
async def set_group_notice(bot, event): gid = event.group_id content = event.message.extract_plain_text().strip() if not content: return sid = event.self_id owner = await bot.get_group_member_info(user_id=sid, group_id=gid) role = owner['role'] if role == 'member': await bot.send(event, '咱又不是管理,你找错人了') return u_priv = priv.get_user_priv(event) if u_priv >= sv.manage_priv: await bot._send_group_notice(group_id=gid, content=content) await bot.send(event, '我好了') else: await bot.send(event, '才不听你的呢')
async def set_group_name(bot, event): gid = event.group_id name = event.message.extract_plain_text().strip() if not name: await bot.finish(event, '群名都没有的你设置个锤子') sid = event.self_id owner = await bot.get_group_member_info(user_id=sid, group_id=gid) role = owner['role'] if role == 'member': await bot.send(event, '咱又不是管理,你找错人了') return u_priv = priv.get_user_priv(event) if u_priv >= sv.manage_priv: await bot.set_group_name(group_id=gid, group_name=name) await bot.send(event, '我好了') else: await bot.send(event, '才不听你的呢')
async def update_wiki(bot, ev: CQEvent): if priv.get_user_priv(ev) < priv.SUPERUSER: return local_version = get_file_md5() download_addres = 'https://wiki.calloy.com.cn/version.json' f = requests.get(download_addres) with open(os.path.join(os.path.dirname(__file__), 'version.json'), "wb") as code: code.write(f.content) with open(os.path.join(os.path.dirname(__file__), 'version.json'), "rb") as file: version = json.load(file) if version['hash'] == local_version: await bot.send(ev, f'已是最新版本,无需更新') else: db_request = requests.get(version['url']) with open(os.path.join(os.path.dirname(__file__), 'data.db'), "wb") as db: db.write(db_request.content) result = version['content'] await bot.send(ev, f'{result}')
async def switch(bot, ctx): global g_config global g_open_groups msg = ctx['raw_message'] switch.gpid = ctx['group_id'] u_priv = priv.get_user_priv(ctx) if u_priv < priv.ADMIN: return if msg == '提高AI概率': g_open_groups.add(switch.gpid) g_config['open_groups'] = list(g_open_groups) save_config(g_config) await bot.send(ctx, '本群AI概率已提高', at_sender=True) elif msg == '降低AI概率': g_open_groups.discard(switch.gpid) g_config['open_groups'] = list(g_open_groups) save_config await bot.send(ctx, '本群AI概率已降低', at_sender=True)
async def switch(bot, ctx): global g_config global g_open_groups msg = ctx['raw_message'] switch.gpid = ctx['group_id'] u_priv = priv.get_user_priv(ctx) if u_priv < priv.ADMIN: return if msg == '开启对线': g_open_groups.add(switch.gpid) g_config['open_groups'] = list(g_open_groups) save_config(g_config) await bot.send(ctx, '本群对线模式已开启,bot将以100%的几率回复群聊消息', at_sender=True) elif msg == '关闭对线': g_open_groups.discard(switch.gpid) g_config['open_groups'] = list(g_open_groups) save_config await bot.send(ctx, '本群对线模式已关闭,bot将以10%的几率回复群聊消息', at_sender=True)
async def unset_admin(bot, event): gid = event.group_id sid = event.self_id owner = await bot.get_group_member_info(user_id=sid, group_id=gid) role = owner['role'] if role == 'member': await bot.send(event, '咱又不是管理,你找错人了') return u_priv = priv.get_user_priv(event) if u_priv >= sv.manage_priv: for m in event.message: if m.type == 'at' and m.data['qq'] != 'all': user = int(m.data['qq']) await bot.set_group_admin(group_id=gid, user_id=user, enable=False) await bot.send(event, '我好了') else: await bot.send(event, '才不听你的呢')
async def ban_user(bot, event): gid = event.group_id u_priv = priv.get_user_priv(event) if u_priv < sv.manage_priv: return msg = event.message.extract_plain_text().strip() sid = event.self_id owner = await bot.get_group_member_info(user_id=sid, group_id=gid) role = owner['role'] if role == 'member': await bot.send(event, '咱又不是管理,你找错人了') return try: uid = int(event.message[0].data['qq']) min = 1 if not msg else int(msg) ban = min * 60 await bot.set_group_ban(group_id=gid, user_id=uid, duration=ban) await bot.send(event, '我好了') except Exception as ex: sv.logger.error(ex)
async def add_reply_for_group(bot, event): uid = event['user_id'] gid = event.get('group_id') user_priv = get_user_priv(event) user_quata = get_user_quota(user_priv) await R.save_image(event) qu = event.raw_message.split('你答')[0].strip('有人问').strip() ans = event.raw_message.split('你答')[1].strip() rec = Record(qu, ans, uid, gid, 1) if rec.count_user_records(uid) >= user_quata: await bot.send(event, '您的额度不足,请删除记录后再来', at_sender=True) return if rec.insert_database(): await bot.send(event, '问答添加成功', at_sender=True) if rec.get_records: global RECORDS RECORDS = rec.get_records() else: await bot.send(event, '问答添加失败,问答不规范或者冲突', at_sender=True)
async def setqa(bot, context): message = context['raw_message'] # print(priv.get_user_priv(context)) if message.startswith('我问'): msg = message[2:].split('你答', 1) if len(msg[1]) == 0 or len(msg[0]) == 0: await bot.send(context, '发送“我问xxx你答yyy”我才能记住', at_sender=False) return q, a = msg if 'granbluefantasy.jp' in q or 'granbluefantasy.jp' in a: # await bot.send(context, '骑空士还挺会玩儿?爬!\n', at_sender=True) return if q not in answers: answers[q] = {} a = await cqimage(a) answers[q][union(context['group_id'], context['user_id'])] = a Question.replace( quest=q, rep_group=context['group_id'], rep_member=context['user_id'], answer=a, creator=context['user_id'], create_time=time.time(), ).execute() await bot.send(context, f'好的我记住了', at_sender=False) elif message.startswith('大家问') or message.startswith('有人问'): if priv.get_user_priv(context) < priv.ADMIN: await bot.send(context, f'只有管理员才可以用{message[:3]}', at_sender=False) return msg = message[3:].split('你答', 1) if len(msg[1]) == 0: await bot.send(context, f'发送“{message[:3]}xxx你答yyy”我才能记住', at_sender=False) return q, a = msg a = await cqimage(a) if q not in answers: answers[q] = {} answers[q][union(context['group_id'], 1)] = a Question.replace( quest=q, rep_group=context['group_id'], rep_member=1, answer=a, creator=context['user_id'], create_time=time.time(), ).execute() await bot.send(context, f'好的我记住了', at_sender=False) elif message.startswith('不要回答') or message.startswith('不再回答'): q = context['raw_message'][4:] ans = answers.get(q) if ans is None: await bot.send(context, f'我不记得有这个问题', at_sender=False) specific = union(context['group_id'], context['user_id']) a = ans.get(specific) if a: Question.delete().where( Question.quest == q, Question.rep_group == context['group_id'], Question.rep_member == context['user_id'], ).execute() del ans[specific] if not ans: del answers[q] await bot.send(context, f'我不再回答"{a}"了', at_sender=False) if priv.get_user_priv(context) < priv.ADMIN: await bot.send(context, f'只有管理员才能删除"有人问"的问题', at_sender=False) return wild = union(context['group_id'], 1) a = ans.get(wild) if a: Question.delete().where( Question.quest == q, Question.rep_group == context['group_id'], Question.rep_member == 1, ).execute() del ans[wild] if not ans: del answers[q] await bot.send(context, f'我不再回答"{a}"了', at_sender=False)