Exemple #1
0
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
Exemple #2
0
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'])
Exemple #3
0
        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
Exemple #4
0
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
Exemple #5
0
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='******')
获取名字中还有特定字符的公众号.