Example #1
0
 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()
Example #2
0
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
Example #3
0
                ).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
Example #4
0
        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
Example #5
0
        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,