def run_game(msg): ''' 监听开始 ''' msg_content = msg['Content'] if msg_content == '.开始' or msg_content == '.继续' or msg_content == '.发牌': msg_user = msg['User'] nick_name, contact_name = get_names(msg) if contact_name not in games: msg_user.send('当前会话中没有正在进行的游戏,回复".新建"创建新游戏') return True game = games[contact_name] if isinstance(msg_user, User): from_user = itchat.update_friend(msg['FromUserName']) nick_name = from_user['NickName'] if game.master_player().name != nick_name: msg_user.send(f'只能由庄家[{game.master_player().name}]发牌') return if game.count_players() < 2: msg_user.send(f'人数不够') return if game.count_players() > 10: msg_user.send(f'人数过多') return for i in range(5): game.draw() game.count_nn() result = f'{game.display_stat()}\n{game.count_score()}\n' msg_user.send(result) game.reset() return True return False
def text_reply(msg): #itchat.send('%s: %s' % (msg['Type'], msg['Text']), msg['FromUserName']) try: userinfo = itchat.update_friend(msg['FromUserName']) usernick = userinfo['NickName'] debug("收到消息!来源:" + usernick + " 内容:" + msg['Text']) except Exception as e: debug("回复消息:解析用户错误!错误原因:" + str(e) + ",msg = " + str(msg)) if core.settings.get_value('TIEBA_SHIDA_UPDATEING_STATE') == False: core.game.core_input(usernick, int(time.time()), msg['Text'], msg['FromUserName']) else: itchat.send_msg('贴吧更新正在进行中,请稍后访问本公众号!', msg['FromUserName'])
def receive_note(msg): text = msg.text print(msg) print(msg.text) print(msg.user) group_name = msg.get('FromUserName') reqr = re.compile('通过扫描"(.*?)".*?二维码') retog = re.compile('邀请"(.*?)"加入了群聊') if reqr.search(text): at_name = reqr.search(text).group(1) elif retog.search(text): at_name = retog.search(text).group(1) else: return unknown = None # 坑 不加这段代码 search_friends总会出错,update_friend对search_friend有影响?看看底层代码 for member in itchat.update_chatroom(group_name).get('MemberList'): if member.get('NickName') == at_name: print('in the member loop') username = member.get('UserName') friend = itchat.update_friend(userName=username) unknown = member.get('NickName') friend = itchat.search_friends(name=at_name) try: at_name = friend[0].get('NickName') except Exception as e: print(e) at_name = unknown # 随机发送欢迎消息 filtered_list = list( filter(lambda x: x[0] == group_name, self.welcome_list)) print(filtered_list) if len(filtered_list) > 1: random.shuffle(filtered_list) for username, content in filtered_list: if username == group_name: res = '@' + at_name + ' ' + content return res
def create_game(msg): ''' 监听游戏创建 ''' msg_content = msg['Content'] if msg_content == '.新建': msg_user = msg['User'] nick_name, contact_name = get_names(msg) if contact_name in games: msg_user.send('游戏已存在, 回复".报名"参加游戏, 或回复".结束"结束游戏') return True games[contact_name] = NNGame() # 如果是单人会话,直接添加双方为玩家 if isinstance(msg_user, User): from_user = itchat.update_friend(msg['FromUserName']) player1 = Player(from_user['NickName']) player2 = Player(nick_name) games[contact_name].add_player(player1) games[contact_name].add_player(player2) msg_user.send(f'新游戏已创建, 请庄家[{player1.name}]发牌') else: msg_user.send('新游戏已创建, 回复".报名"参加游戏') return True return False
itchat.search_friends(userName='******') 获取备注,微信号, 昵称中的任何一项等于name键值的用户. (可以与下一项配置使用.) # 获取任何一项等于name键值的用户 itchat.search_friends(name='littlecodersh') 获取备注,微信号, 昵称分别等于相应键值的用户. (可以与上一项配置使用.) # 获取分别对应相应键值的用户 itchat.search_friends(wechatAccount='littlecodersh') # 三、四项功能可以一同使用 itchat.search_friends(name='LittleCoder机器人', wechatAccount='littlecodersh') update_friend : 好友更新 特定用户: 传入用户UserName, 返回指定用户的最新信息. 用户列表: 传入 UserName 组成的列表, 返回用户最新信息组成的列表. memberList = itchat.update_friend('@abcdefg1234567') 2. 公众号 get_mps : 将返回完整的工作号列表. 每个公众号为一个字典, 传入 update=True 将更新公众号列表, 并返回. search_mps : 有两种搜索方法: 获取特定UserName的公众号 # 获取特定UserName的公众号,返回值为一个字典 itchat.search_mps(userName='******') 获取名字中还有特定字符的公众号.