def change_member_info(self, group: Group, target: int, name=None, specialTitle=None): """ 更改群员信息 :param group: 群 :param target: 成员 :param name: 需要更改的群名片(可选) :param specialTitle: 给予的头衔(可选) :return: """ data = { 'sessionKey': self.session, 'target': group.uid, 'memberId': target, 'info': {} } if name: data['info']['name'] = name if specialTitle: data['info']['specialTitle'] = specialTitle res = self.json_query('/memberInfo', data) if res['code'] == 0: logger.info( f'Change {target} info from {group.name}({group.uid}) to ' + json.dumps(data['info'])) else: logger.error(f'Member info change error: {res["msg"]}')
def verify(self, qq): res = self.json_query('/verify', { 'sessionKey': self.session, 'qq': qq }) if res['code'] == 0: logger.info(f'Successfully bind on qq {qq}.')
def __init__(self, addr: str, authKey: str, retry: int = 5): self.addr = addr self.baseUrl = addr if addr.startswith('http://') else 'http://' + addr self.mirai_version = self.json_query('/about', post=False)['data']['version'] self.retry = retry logger.info( f'Connected to mirai-http backend. The version is {self.mirai_version}.' ) self.session = self.json_query('/auth', {'authKey': authKey})['session'] # self.session = '8zHZb8kg' logger.info(f'Authed. Your session is {self.session}')
def send_group_message(self, group: Group, msg: Message): res = self.json_query( '/sendGroupMessage', { 'sessionKey': self.session, 'target': group.uid, 'messageChain': msg.getChain() }) if res['code'] == 0: logger.info( f'{group.name}({group.uid}) <- {msg.getContent(console=True)}') else: logger.warn( f'Send message to {group.name}({group.uid}) failed with code {res["code"]}' )
def registerPlugins(self, plugins: list): for plugin in plugins: logger.info(f'Loading plugin: {plugin}') try: __import__(plugin) except Exception as e: logger.error(e) # 处理 OnLoad for func in PluginManager.plugins['OnLoad']: try: logger.info(f'Running OnLoad func from {func}') func(self) except Exception as e: logger.error(e)
def send_friend_message(self, friend: Friend, msg: Message): res = self.json_query( '/sendFriendMessage', { 'sessionKey': self.session, 'target': friend.uid, 'messageChain': msg.getChain() }) if res['code'] == 0: logger.info( f'{friend.remark}({friend.uid}) <- {msg.getContent(console=True)}' ) else: logger.error( f'Send message to {friend.remark}({friend.uid}) failed with code {res["code"]}' )
def json_query(self, addr: str, data: dict = None, post: bool = True) -> dict: try: res = requests.post( self.baseUrl + addr, json=data) if post else requests.get(self.baseUrl + addr) res = json.loads(res.text) if res['code']: logger.error(f'{addr} got code: {res["code"]}') return res except Exception as e: logger.error(e) logger.info(f'Retry after {self.retry}s...') time.sleep(self.retry) return self.json_query(addr, data, post)
def unmute(self, target: Group, memberId: int): """ 解除群成员禁言 :param target: 群号 :param memberId: 成员qq :return: """ if target.permission != Permission.ADMINISTRATOR.name: logger.error(f'Unmute error: Permission denied.') return -1 res = self.json_query('/unmute', { 'sessionKey': self.session, 'target': target.uid, 'memberId': memberId }) if res['code'] == 0: logger.info(f'Unmuted {memberId} from {target.name}({target.uid})') else: logger.warn(f'Unmute error: {res["msg"]}')
from saaya.logger import logger import logging # 日志级别,logger 和 handler以最高级别为准,不同handler之间可以不一样,不相互影响 logger.setLevel(logging.INFO) version = '0.2.2 dev' logger.info(f'Welcome to use saaya({version}) based on mirai!') flag = 'flag{wElc0me_u5e_Sa@ya}'
def illustrate(self): logger.info(f'{self.group.name}({self.group.uid}): ' f'{self.operator.name}({self.operator.uid}) <- 撤回了' f'{self.source.getContent()}')
def illustrate(self): logger.info( f'{self.group.name}({self.group.uid}) -> ' f'{self.sender.name}({self.sender.uid}): {self.message.getContent(console=True)}' )
def processor(self, msg): event = Event(self.bot) logger.debug(msg) data: dict = json.loads(msg) event.type = data['type'] if event.type.endswith('Event'): logger.info(f'Receive event: {event.type}') if event.type == 'FriendMessage': sender = Friend(self.bot, uid=data['sender']['id'], nickname=data['sender']['nickname'], remark=data['sender']['remark']) message = Message(data['messageChain'], fromSource=True) event = FriendMessage(event, sender, message) if event.type == 'GroupMessage': group = Group(self.bot, qq=data['sender']['group']['id'], name=data['sender']['group']['name'], permission=data['sender']['group']['permission']) sender = GroupMember(self.bot, qq=data['sender']['id'], name=data['sender']['memberName'], permission=data['sender']['permission']) message = Message(data['messageChain'], fromSource=True) event = GroupMessage(event, sender, group, message) if event.type == 'GroupRecallEvent': group = Group(self.bot, qq=data['group']['id'], name=data['group']['name'], permission=data['group']['permission']) operator = GroupMember(self.bot, qq=data['operator']['id'], name=data['operator']['memberName'], permission=data['operator']['permission']) source = Source(msgId=data['messageId'], time=data['time']) event = GroupRecallEvent(event, operator, group, source) if event.type == 'MemberCardChangeEvent': group = Group(self.bot, qq=data['member']['group']['id'], name=data['member']['group']['name'], permission=data['member']['group']['permission']) member = GroupMember(self.bot, qq=data['member']['id'], name=data['member']['memberName'], permission=data['member']['permission']) if data['operator']: operator = GroupMember( self.bot, qq=data['operator']['id'], name=data['operator']['memberName'], permission=data['operator']['permission']) else: operator = None origin = data['origin'] new = data['new'] event = MemberCardChangeEvent(event, origin, new, member, group, operator) PluginManager.broadCast(event)
def illustrate(self): logger.info(f'{self.group.name}({self.group.uid}) -> ' f'{self.member.uid} 的名称从 {self.origin} 变更为 {self.new}')
def __init__(self, addr: str, authKey: str): self.qq = 0 self.protocol = Protocol(addr, authKey) logger.info('Bot initialized.')