async def record(self, message: MessageChain, group: Group, member: Member): await update_user_call_count_plus1(group, member, UserCalledCount.chat_count, "chat_count") content = "".join([plain.text for plain in message.get(Plain)]) filter_words = re.findall(r"\[mirai:(.*?)\]", content, re.S) for i in filter_words: content = content.replace(f"[mirai:{i}]", "") if content: seg_result = jieba.lcut(content) if not seg_result: return None new_id = list( orm.fetchone( select(ChatRecord.id).order_by(desc(ChatRecord.id)), 1)) new_id = new_id[0][0] + 1 if new_id else 1 try: orm.add( ChatRecord, { "id": new_id, "time": datetime.datetime.now(), "group_id": group.id, "member_id": member.id, "content": content, "seg": "|".join(seg_result) }) except Exception as e: logger.error(traceback.format_exc()) orm.session.rollback()
async def update_user_call_count_plus1(group: Group, member: Member, table_column, column_name: str) -> bool: new_value = list(orm.fetchone( select(table_column).where(UserCalledCount.group_id == group.id, UserCalledCount.member_id == member.id)) ) new_value = new_value[0][0] + 1 if new_value else 1 try: orm.update( UserCalledCount, {"group_id": group.id, "member_id": member.id}, {"group_id": group.id, "member_id": member.id, column_name: new_value} ) except Exception: logger.error(traceback.format_exc()) orm.session.rollback() return False try: if not column_name == "chat_count": new_id = list(orm.fetchone(select(FunctionCalledRecord.id).order_by(desc(FunctionCalledRecord.id)), 1)) new_id = new_id[0][0] + 1 if new_id else 1 orm.add( FunctionCalledRecord, { "id": new_id, "time": datetime.datetime.now(), "group_id": group.id, "member_id": member.id, "function": column_name } ) except Exception: logger.error(traceback.format_exc()) orm.session.rollback() return True
).where( ChatSession.group_id == group_id, ChatSession.member_id == member_id ) ) ): return str(result[0][0]) else: new_session = list(orm.fetchall(select(ChatSession.member_session).order_by(desc(ChatSession.member_session)))) new_session = new_session[0][0] + 1 if new_session else 1 logger.info(f"new_session for {group_id} -> {member_id}: {new_session}") try: orm.add( ChatSession, { "group_id": group_id, "member_id": member_id, "member_session": new_session } ) return str(new_session) except Exception as e: logger.error(traceback.format_exc()) orm.session.rollback() @staticmethod async def get_tx_sign(params: dict) -> str: """ Get sign of Tencent Ai Platform Args: params: Dict to send
def wrapper(*args, **kwargs): print(group.name, member.name) if result := orm.fetchone( select(UserPermission.level).where( UserPermission.group_id == group.id and UserPermission.member_id == member.id)): if result[0][0] >= level: return func(*args, **kwargs) else: print("等级不够呢~") return None else: try: orm.add(UserPermission, { "group_id": group.id, "member_id": member.id, "level": 1 }) except Exception: logger.error(traceback.format_exc()) orm.session.rollback() if level > 1: print("等级不够呢~") return None else: return func(*args, **kwargs) return wrapper return decorate
try: if result := list( orm.fetchone( select(KeywordReply).where( KeywordReply.keyword == keyword, KeywordReply.reply_type == reply_type, KeywordReply.reply_md5 == reply_md5))): print(result) return MessageItem( MessageChain.create([Plain(text=f"重复添加关键词!进程退出")]), Normal(GroupStrategy())) else: orm.add( KeywordReply, { "keyword": keyword, "reply": reply, "reply_type": reply_type, "reply_md5": reply_md5 }) return MessageItem( MessageChain.create([Plain(text=f"关键词添加成功!")]), Normal(GroupStrategy())) except Exception: logger.error(traceback.format_exc()) orm.session.rollback() return MessageItem( MessageChain.create([Plain(text="发生错误!请查看日志!")]), Normal(GroupStrategy())) @staticmethod async def delete_keyword(app: GraiaMiraiApplication,