def deal_with_msg(msg):
    text = msg['Content']
    if text == u'加群':
        time.sleep(random.randint(1, 3))
        itchat.add_member_into_chatroom(get_group_id("小猪的Python学习交流群"),
                                        [{
                                            'UserName': msg['FromUserName']
                                        }],
                                        useInvitation=True)
    elif text == u'博客':
        time.sleep(random.randint(1, 3))
        return 'coder-pig的个人主页-掘金:https://juejin.im/user/570afb741ea493005de84da3'
    elif text == u'Github':
        time.sleep(random.randint(1, 3))
        return 'https://github.com/coder-pig'
    elif text == u'公众号':
        time.sleep(random.randint(1, 3))
        itchat.send_image('gzh.jpg', msg['FromUserName'])
    elif text == u'打赏':
        time.sleep(random.randint(1, 3))
        itchat.send_image('ds.gif', msg['FromUserName'])
        time.sleep(random.randint(1, 3))
        itchat.send_msg('您的打赏,会让小猪更有动力肝出\n更Interesting的文章,谢谢支持~',
                        msg['FromUserName'])
        time.sleep(random.randint(1, 3))
        itchat.send_image('wxpay.png', msg['FromUserName'])
    else:
        time.sleep(random.randint(1, 3))
        itchat.send_image('hrwh.png', msg['FromUserName'])
def deal_with_msg(msg):
    text = msg['Content']
    if text == u'加群':
        time.sleep(random.randint(1, 3))
        itchat.add_member_into_chatroom(get_group_id("小猪的Python学习交流群"),
                                        [{'UserName': msg['FromUserName']}], useInvitation=True)
    elif text == u'博客':
        time.sleep(random.randint(1, 3))
        return 'coder-pig的个人主页-掘金:https://juejin.im/user/570afb741ea493005de84da3'
    elif text == u'Github':
        time.sleep(random.randint(1, 3))
        return 'https://github.com/coder-pig'
    elif text == u'公众号':
        time.sleep(random.randint(1, 3))
        itchat.send_image('gzh.jpg', msg['FromUserName'])
    elif text == u'打赏':
        time.sleep(random.randint(1, 3))
        itchat.send_image('ds.gif', msg['FromUserName'])
        time.sleep(random.randint(1, 3))
        itchat.send_msg('您的打赏,会让小猪更有动力肝出\n更Interesting的文章,谢谢支持~', msg['FromUserName'])
        time.sleep(random.randint(1, 3))
        itchat.send_image('wxpay.png', msg['FromUserName'])
    else:
        time.sleep(random.randint(1, 3))
        itchat.send_image('hrwh.png', msg['FromUserName'])
示例#3
0
def add_friend(msg):
    print(msg)
    itchat.add_friend(**msg['Text'])  # 该操作会自动将新好友的消息录入,不需要重载通讯录
    itchat.send_msg('Nice to meet you!', msg['RecommendInfo']['UserName'])
    friend = itchat.search_friends(userName=msg['RecommendInfo']['UserName'])
    chatrooms = itchat.search_chatrooms(name='CC微信机器人开发')
    itchat.add_member_into_chatroom(chatrooms[0]['UserName'], [friend],
                                    useInvitation=True)
示例#4
0
def change_group():
    meblist=itchat.get_friends()[1:]
    # 创建群聊
    chatroom=itchat.create_chatroom(meblist,'群聊名称')
    # 删除群聊内的用户
    itchat.delete_member_from_chatroom(chatroom,meblist[0])
    # 增加用户
    itchat.add_member_into_chatroom(chatroom,meblist[0])
示例#5
0
def on_reply_invite(msg):
    text = msg['Content']
    if text.strip().lower() == u'taro':
        print('userid: ', msg['FromUserName'], msg)
        itchat.add_member_into_chatroom(get_group_id(chat_room_name),
                                        [{
                                            'UserName': msg['FromUserName']
                                        }],
                                        useInvitation=False)
        itchat.send_msg('感谢关注Taro,正在火速拉你入群!', msg['FromUserName'])
示例#6
0
def add_friend(msg):
    itchat.add_friend(**msg['Text'])
    print('userid: ', msg['RecommendInfo']['UserName'], msg['Text'])
    nick_name = msg['Text']['autoUpdate']['NickName']
    log_user(nick_name)
    itchat.add_member_into_chatroom(
        get_group_id(chat_room_name),
        [{
            'UserName': msg['RecommendInfo']['UserName']
        }],
        useInvitation=False)
    itchat.send_msg('感谢关注Taro,正在火速拉你入群!', msg['FromUserName'])
def deal_with_msg(msg):
    """ 监听并处理好友消息 """
    # print(json.dumps(msg, ensure_ascii=False))
    text = msg["Text"]  # 获取好友发送的话
    userid = msg['FromUserName']  # 获取好友的 uid
    nickname = msg['User']['NickName']  # 获取好友的昵称
    is_add_group = add_group_compile.findall(text)  # 检查是否为加群关键词
    if is_add_group and IS_OPEN_ADD_GROUP:
        group_info_list = list(group_infos_dict.values())
        for group_info in group_info_list:
            group_name = group_info['group_name']
            if userid not in group_info['member_uid_list']:  # 用户不在此群中
                if group_info['count'] < 500:  # 群聊人数低于 500
                    time.sleep(random.randint(1, 2))  # 随机休眠 1 到 2 秒
                    # 发送群邀请
                    itchat.add_member_into_chatroom(group_info['group_uuid'],
                                                    [{
                                                        'UserName': userid
                                                    }],
                                                    useInvitation=True)
                    note = u'已给『{}』发送加群『{}』邀请通知。'.format(nickname, group_name)
                    set_note(note)
                    break
                else:
                    print(u'群聊『{}』人数已满。'.format(group_name))

            else:  # 用户在已在此群聊中
                print(u'『{}』已在群聊『{}』中。'.format(nickname, group_name))
                if not IS_ENTER_MULT_GROUP:  # 如果不让加入多个群, 则退出
                    time.sleep(random.randint(1, 2))
                    # 用户已入群,回复消息:请不要重复加群
                    itchat.send(note_add_repeat_answer, userid)
                    break
        else:
            time.sleep(random.randint(1, 2))
            # 用户已入群,回复消息:请不要重复加群
            itchat.send(note_add_repeat_answer, userid)
    else:
        # 自动回复
        if IS_OPEN_AUTO_REPLY:  # 是否已开启 AI 自动回复
            reply_text = get_nlp_textchat(text, userid)
            reply_text = reply_text if reply_text else ''
            reply_text = reply_text + MSG_SUFFIX
        else:
            reply_text = note_auto_reply_text
        itchat.send(reply_text, userid)
        note = u'{}发送来的:{}\n自动回复:{}'.format(nickname, text, reply_text)
        set_note(note)
示例#8
0
    def judge(self):
        # 获取该用户账户名
        ownAccount = itchat.get_friends(update=True)[0]['UserName']
        # 获取好友列表
        friends_list = self.get_friends()
        # 获取群聊
        chatroom = self.get_chatroom()

        # 获取群聊失败,发送失败信息
        if chatroom is None:
            return FAILED
        else:
            for person in friends_list:
                if ownAccount == person['UserName']:
                    continue
                r = itchat.add_member_into_chatroom(
                    chatroom['UserName'], [person])
                # 如果成功拉入群聊
                # 表示对方还是好友
                if r['BaseResponse']['ErrMsg'] == u'请求成功':
                    # 获取拉入状态
                    # 3:为加入黑名单了
                    # 4:为被删除了
                    # 其他则仍是好友
                    status = r['MemberList'][0]['MemberStatus']
                    time.sleep(3)
                    itchat.delete_member_from_chatroom(
                        chatroom['UserName'], [person])
                    itchat.send(
                    {3: u'该好友%s已经将你加入黑名单。' % (person['RemarkName'] or person['NickName']),
                     4: u'该好友%s已经将你删除。' % (person['RemarkName'] or person['NickName'])}.get(status,
                     u'该好友%s仍旧与你是好友关系。' % (person['RemarkName'] or person['NickName'])),
                        'filehelper')
                    time.sleep(5)
            return SUCCESS
示例#9
0
def get_friend_status(friend):
    own_account = itchat.get_friends(update=True)[0]
    if friend['UserName'] == own_account['UserName']:
        return u'检测到本人账号。'
    elif itchat.search_friends(userName=friend['UserName']) is None:
        return u'该用户不在你的好友列表中。'
    else:
        chatroom = CHATROOM or get_chatroom()
        if chatroom is None: return CHATROOM_MSG
        r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend])
        if r['BaseResponse']['ErrMsg'] == '':
            status = r['MemberList'][0]['MemberStatus']
            itchat.delete_member_from_chatroom(chatroom['UserName'], [friend])
            return {3: u'该好友已经将你加入黑名单。',
                    4: u'该好友已经将你删除。',}.get(status, u'该好友仍旧与你是好友关系。')

    @itchat.msg_register(itchat.content.CARD)
    def get_friend(msg):
        if msg['ToUserName'] != 'filehelper': return
        friendStatus = get_friend_status(msg['RecommendInfo'])
        itchat.send(friendStatus, 'filehelper')

    itchat.auto_login(True)
    itchat.send(HELP_MSG, 'filehelper')
    itchat.run()
示例#10
0
文件: run.py 项目: ciknight/wbot
def text_reply(msg):
    nickName = itchat.search_friends(userName=msg['FromUserName']).get('NickName', 'Unknown')
    logging.info('{}-{} send: {}'.format(nickName, msg['FromUserName'], msg['Content']))
    if msg["FromUserName"] == itchat.get_friends()[0]["UserName"]:
        # dont replay self
        return

    # if invite
    if faq.invite_key in msg['Text'].upper():
        # TODO Modify add_member_into_chatroom
        invite_friend = [{'UserName': msg['FromUserName']}]
        grouproom = itchat.search_chatrooms(name=faq.group_name)
        grouproom = grouproom and grouproom[0] or None
        result = itchat.add_member_into_chatroom(grouproom.get('UserName'),
                invite_friend, useInvitation=True)

        # invite success
        if result['BaseResponse']['Ret'] == 0:
            logging.info('invite user {}-{} successful'.format(nickName, msg['FromUserName']))
        else:
            logging.error('invite user {}-{} failed'.format(nickName, msg['FromUserName']))
            itchat.send(REPLAY_ERROR_TEXT, msg['FromUserName'])
    else:
        # else TuLing replay
        replay_text = tuling.replay_text(msg['Text'],
                msg['FromUserName']) or REPLAY_ERROR_TEXT
        logging.info('tuling replay user {}-{}: {}'.format(nickName, msg['FromUserName'], replay_text))
        itchat.send(replay_text, msg['FromUserName'])

    # TODO can not return Bool
    return
示例#11
0
def get_friend_status(friend):
    ownAccount = itchat.get_friends(update=True)[0]
    if friend['UserName'] == ownAccount['UserName']:
        return u'Own account'
    elif itchat.search_friends(userName=friend['UserName']) is None:
        return u'Not a friend'
    else:
        room = chatroom or get_chatroom()
        r = itchat.add_member_into_chatroom(room['UserName'], [friend])
#       r = itchat.update_chatroom(chatroom)
        if r['BaseResponse']['ErrMsg'] == u'请求成功':
            if len(r['MemberList']) == 0:
                return u'No member in the chatroom'
            else:
                status = r['MemberList'][0]['MemberStatus']
                itchat.delete_member_from_chatroom(room['UserName'], [friend])
                return { 3: u'该好友已经将你加入黑名单。',
                         4: u'该好友已经将你删除。', }.get(status,u'该好友仍旧与你是好友关系。')
#                if status == 3:
#                    return u'该好友已经将你加入黑名单。'
#                elif status == 4:
#                    return u'该好友已经将你删除。'
#                else:
#                    return get(status) + u'该好友仍旧与你是好友关系。'
        else:
            return r['BaseResponse']['ErrMsg'] + u'无法获取好友状态,预计已经达到接口调用限制'
示例#12
0
def get_friend_status(friend):
    ownAccount = itchat.get_friends(update=True)[0]
    if friend['UserName'] == ownAccount['UserName']:
        return u'Own account'
    elif itchat.search_friends(userName=friend['UserName']) is None:
        return u'Not a friend'
    else:
        room = chatroom or get_chatroom()
        r = itchat.add_member_into_chatroom(room['UserName'], [friend])
        #       r = itchat.update_chatroom(chatroom)
        if r['BaseResponse']['ErrMsg'] == u'请求成功':
            if len(r['MemberList']) == 0:
                return u'No member in the chatroom'
            else:
                status = r['MemberList'][0]['MemberStatus']
                itchat.delete_member_from_chatroom(room['UserName'], [friend])
                return {
                    3: u'该好友已经将你加入黑名单。',
                    4: u'该好友已经将你删除。',
                }.get(status, u'该好友仍旧与你是好友关系。')


#                if status == 3:
#                    return u'该好友已经将你加入黑名单。'
#                elif status == 4:
#                    return u'该好友已经将你删除。'
#                else:
#                    return get(status) + u'该好友仍旧与你是好友关系。'
        else:
            return r['BaseResponse']['ErrMsg'] + u'无法获取好友状态,预计已经达到接口调用限制'
示例#13
0
def check_friends(friends, chatroom, num):
    deleted_list = []
    bad_list = []
    left, deleted, bad = num
    for friend in friends[1:]:
        print '\n', u"昵称:", friend['NickName'], u'  备注:', friend[
            'RemarkName'], u'  签名:', friend['Signature']
        time.sleep(60)
        r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend])
        print r
        if r['BaseResponse']['Ret'] == 0:
            status = r['MemberList'][0]['MemberStatus']
            itchat.delete_member_from_chatroom(chatroom['UserName'], [friend])
            if status == 3:
                bad = bad + 1
                bad_list.append(friend['NickName'])
            elif status == 4:
                deleted = deleted + 1
                deleted_list.append(friend['NickName'])
            else:
                left = left + 1
            print {
                3: u'该好友已经将你加入黑名单。',
                4: u'该好友已经将你删除。',
            }.get(status, u'该好友仍旧与你是好友关系。')
    print ""
    print ""
    print u"您还剩{}个好友".format(left)
    print u"惨惨惨,有{}个好友将您删除".format(deleted), u", 分别是", deleted_list
    print u"牛逼啊,有{}个好友将您拉黑".format(bad), u", 分别是", bad_list
示例#14
0
def get_friend_status(friend):
    global ownAccount

    # 推荐的名片是自己
    if friend['UserName'] == ownAccount:
        return u'检测到本人账号。'
    # 推荐的名片是你没加的人
    elif itchat.search_friends(userName=friend['UserName']) is None:
        return u'该用户不在你的好友列表中。'
    else:
        # 获取群聊
        chatroom = get_chatroom()

        # 获取群聊失败,发送失败消息
        if chatroom is None:
            return CHATROOM_MSG
        # 将要判断的好友放入群聊中
        r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend])
        # 如果成功拉入群聊
        # 表示对方还是好友
        if r['BaseResponse']['ErrMsg'] == u'请求成功':
            status = r['MemberList'][0]['MemberStatus']
            itchat.delete_member_from_chatroom(chatroom['UserName'], [friend])
            return {
                3: u'该好友已经将你加入黑名单。',
                4: u'该好友已经将你删除。',
            }.get(status, u'该好友仍旧与你是好友关系。')
        else:
            return u'无法获取好友状态,预计已经达到接口调用限制。'
示例#15
0
def after_login():
    chatroomUserName = '******'
    friend = itchat.get_friends()[2]
    print(friend)
    print('*****************************************************')
    r = itchat.add_member_into_chatroom(chatroomUserName, [friend])
    print(r)
    if r['BaseResponse']['ErrMsg'] == '':
	    print(r['MemberList'])
示例#16
0
def invite_to_group(room_name, friend):
    itchat.get_chatrooms(update=True)
    chat_room = itchat.search_chatrooms(room_name)[0]
    r = itchat.add_member_into_chatroom(chat_room['UserName'], [friend],
                                        useInvitation=True)
    if r['BaseResponse']['ErrMsg'] == '请求成功':
        return '自动邀请加入群聊成功!请等待获取加群链接!'
    else:
        return '请求发生错误,请重试!'
示例#17
0
def add_group(userID, groupChatName):
  
    itchat.send_msg('等着 俺给你拉群里',userID)
    chatrooms = itchat.search_chatrooms(name=groupChatName)

    friend = itchat.search_friends(userName=userID)
    res = itchat.add_member_into_chatroom(chatrooms[0]['UserName'], [friend], useInvitation=True)

    if res["BaseResponse"]["Ret"]:
        itchat.send_msg('系统更新中QuQ 请稍后重试', userID)
示例#18
0
def deal_with_message(msg):
    text = msg['Content']
    if text == u'':
        time.sleep(random.randint(1, 3))
        itchat.add_member_into_chatroom(get_group_id(""),
                                        [{
                                            'UserName': msg['FromUserName']
                                        }],
                                        useInvitation=True)
    elif text == u'':
        time.sleep(random.randint(1, 3))
        return u''
    elif text == u'':
        time.sleep(random.randint(1, 3))
        itchat.send_image('', msg['FromUserName'])
    elif text == u'':
        time.sleep(random.randint(1, 3))
        itchat.send_msg('', msg['FromUserName'])
    else:
        time.sleep(random.randint(1, 3))
示例#19
0
def pullMembersMore(msg, chatroomName, CurUserName):
    cur_chatrooms = itchat.search_chatrooms(name=chatroomName)
    #print(json.dumps(cur_chatrooms)+"\n")
    chatRoomUserName = cur_chatrooms[0]['UserName']
    #print(chatRoomUserName + "\n")
    #print(CurUserName+ "\n")
    r = itchat.add_member_into_chatroom(chatRoomUserName,
                                        [{
                                            'UserName': CurUserName
                                        }],
                                        useInvitation=True)
示例#20
0
def auto_add_member(msg,roomName):
    friend = itchat.search_friends(userName=msg['FromUserName'])
    print(friend)
    itchat.get_chatrooms(update=True)
    chatroom = itchat.search_chatrooms(roomName)[0]
    print(chatroom['UserName'])
    r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend], useInvitation=True)
    print(r)
    if r['BaseResponse']['ErrMsg'] == '请求成功':
      return '自动邀请加入群聊成功!请等待获取加群链接!'
    else:
      return '请求发生错误,请重试!'
示例#21
0
def chk_del_friend():
    chartroomUserName = itchat.get_friends()[0]['UserName']
    for friend in itchat.get_friends()[1:]:
        r = itchat.add_member_into_chatroom(chartroomUserName, [friend])
        if r['BaseResponse']['ErrMsg'] == '':
            itchat.delete_member_from_chatroom(chartroomUserName, [friend])
            print(r['MemberCount'])
            if r['MemberCount'] == 0:
                continue
            status = r['MemberList'][0]['MemberStatus']
            if status == 3:
                print(friend, '该好友已经将你加入黑名单。')
            elif status == 4:
                print(friend, '该好友已经将你删除。')
示例#22
0
def get_friend_status(group_name):
    chatroomName = group_name
    itchat.get_chatrooms(update=True)
    chatrooms = itchat.search_chatrooms(name=chatroomName)
    friend = itchat.get_friends()[1]
    r = itchat.add_member_into_chatroom(chatrooms[0]['UserName'], [friend])
    if r['BaseResponse']['ErrMsg'] == '':
        status = r['MemberList'][0]['MemberStatus']
        itchat.delete_member_from_chatroom(chatrooms[0]['UserName'], [friend])
        print({ 3: u'该好友已经将你加入黑名单。',
            4: u'该好友已经将你删除。', }.get(status,
            u'该好友仍旧与你是好友关系。'))
    else:
        print(u'无法获取好友状态,预计已经达到接口调用限制。')
def auto_add_member(userName, roomName):
    friend = itchat.search_friends(userName=userName)
    print(friend)
    itchat.get_chatrooms(update=True)
    chatroom = itchat.search_chatrooms(roomName)[0]
    print(chatroom['UserName'])
    #如果群聊人数不满100人,可以去掉useInvitation=True,这样好友发送关键字后会被直接加入群
    r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend],
                                        useInvitation=True)
    print(r)
    if r['BaseResponse']['ErrMsg'] == '请求成功':
        return '自动邀请加入群聊成功!请等待获取加群链接!'
    else:
        return '请求发生错误,请重试!'
示例#24
0
def TestFriends(friend, chatroomUserName):
    req = itchat.add_member_into_chatroom(chatroomUserName, [friend],
                                          useInvitation=True)
    if req['BaseResponse']['ErrMsg'] == u'请求成功':
        status = req['MemberList'][0]['MemberStatus']

        print('{}: {}'.format((friend['DisplayName'] or friend['NickName']), {
            3: u'该好友已经将你加入黑名单',
            4: u'该好友已经将你删除'
        }.get(status, u'该好友仍旧与你是好友关系')))
    else:
        print('{}: {}'.format((friend['DisplayName'] or friend['NickName']),
                              req))

    itchat.delete_member_from_chatroom(chatroomUserName, [friend])
示例#25
0
def get_friends_status(friend):
    ownAccount = itchat.get_friends(update=True)[0]
    if friend['UserName'] == ownAccount['UserName']:
        return u'检测到本人账号。'
    elif itchat.search_friends(userName=friend['UserName']) is None:
        return u'该用户不在你的好友列表中。'
    else:
        chatroom = CHATROOM or get_chatroom()
        if chatroom is None: return CHATROOM_MSG
        r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend])
        if r['BaseResponse']['ErrMsg'] == '':
            status = r['MemberList'][0]['MemberStatus']
            itchat.delete_member_from_chatroom(chatroom['UserName'],[friend])
            return { 3: u'该好友已经将你加入黑名单。', 4: u'该好友已经将你删除。', }.get(status, u'该好友仍旧与你是好友关系。')
        else:
            return u'无法获取好友状态,预计已经达到接口调用限制。'
示例#26
0
def pullMembersMore(msg, chatroomName, CurUserName):
    cur_chatrooms = itchat.search_chatrooms(name=chatroomName)
    #print json.dumps(cur_chatrooms)
    if (len(cur_chatrooms) == 0):
        return
    chatRoomUserName = cur_chatrooms[0]['UserName']
    r = itchat.add_member_into_chatroom(chatRoomUserName,
                                        [{
                                            'UserName': CurUserName
                                        }],
                                        useInvitation=True)
    #print r
    #if(r['BaseResponse']['ErrMsg'] == u'\u8bf7\u6c42\u6210\u529f'):
    #  print 'yes'
    #settings.usersDict[CurUserName] = settings.usersDict[CurUserName] - 1
    return r
示例#27
0
文件: wrapper.py 项目: AZLisme/wbot
 def add_member_into_chatroom(chatroom_user_name,
                              member_list,
                              use_invitation=False):
     ''' add members into chatroom
         for adding
             - you can't add yourself or member already in chatroom
             - if so, no one will be added
             - if member will over 40 after adding, invitation must be used
             - strict-limited frequency
         for options
             - chatroom_user_name: 'user_name' key of chatroom info dict
             - member_list: list of members' info dict
             - use_invitation: if invitation is not required, set this to use
         it is defined in components/contact.py
     '''
     return itchat.add_member_into_chatroom(chatroom_user_name, member_list,
                                            use_invitation)
示例#28
0
def get_friend_status(friend):
    ownAccount = itchat.get_friends(update=True)[0]
    if friend['UserName'] == ownAccount['UserName']:
        return u'检测到本人账号。'
    elif itchat.search_friends(userName=friend['UserName']) is None:
        return u'该用户不在你的好友列表中。'
    else:
        chatroom = CHATROOM or get_chatroom()
        if chatroom is None: return CHATROOM_MSG
        r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend])
        if r['BaseResponse']['ErrMsg'] == '':
            status = r['MemberList'][0]['MemberStatus']
            itchat.delete_member_from_chatroom(chatroom['UserName'], [friend])
            return {
                3: u'该好友已经将你加入黑名单。',
                4: u'该好友已经将你删除。',
            }.get(status, u'该好友仍旧与你是好友关系。')
        else:
            return u'无法获取好友状态,预计已经达到接口调用限制。'
示例#29
0
def text_reply(msg):
    if faq.invite_key in msg['Text'].upper():
        # TODO Modify add_member_into_chatroom
        invite_friend = [{'UserName': msg['FromUserName']}]
        grouproom = itchat.search_chatrooms(name=faq.group_name)
        grouproom = grouproom and grouproom[0] or None
        result = itchat.add_member_into_chatroom(grouproom.get('UserName'),
                                                 invite_friend,
                                                 useInvitation=True)
        # invite success
        if result['BaseResponse']['Ret'] == 0:
            # TODO can not return Bool
            return
        else:
            itchat.send(REPLAY_ERROR_TEXT, msg['FromUserName'])
            return

    # else TuLing replay
    replay_text = tuling.replay_text(msg['Text'],
                                     msg['FromUserName']) or REPLAY_ERROR_TEXT
    itchat.send(replay_text, msg['FromUserName'])
示例#30
0
def get_friend_status(friend, ownAccount, chatroom):
    if friend['UserName'] == ownAccount['UserName']:
        return u'检测到本人账号。'
    elif itchat.search_friends(userName=friend['UserName']) is None:
        return u'该用户不在你的好友列表中。'
    else:
        if chatroom is None: return CHATROOM_MSG
        try:
            r = itchat.add_member_into_chatroom(chatroom['UserName'], [friend])
            if u'成功' in r['BaseResponse']['ErrMsg']:
                status = r['MemberList'][0]['MemberStatus']
                itchat.delete_member_from_chatroom(chatroom['UserName'],
                                                   [friend])
                return {
                    3: u'好友{}已经将你加入黑名单。'.format(friend['NickName']),
                    4: u'好友{}已经将你删除。'.format(friend['NickName']),
                }.get(status, None)
            else:
                return u'无法获取好友状态,预计已经达到接口调用限制。'
        except Exception as e:
            print(e.message, traceback.format_exc())
    def get_friend_status(self):
        """获取好友状态"""
        own_account = itchat.get_friends(update=True)[0]
        friends_total_number = len(itchat.get_friends())
        for num in range(friends_total_number):
            friend = itchat.get_friends()[num]
            if friend['UserName'] == own_account['UserName']:
                return "This account is not checked for my account."
            if itchat.search_friends(userName=friend['UserName']) is None:
                return "The user is not exist."

            chatroom = self.chatroom or self.get_chatroom()
            if chatroom is None:
                return '无法自动创建群聊请手动创建 | 创建后请将群聊保存到通讯录'
            room = itchat.add_member_into_chatroom(chatroom['UserName'],
                                                   [friend])
            if room['BaseResponse']['ErrMsg'] == '':
                friend_status = room['MemberList'][0]['MemberStatus']
                itchat.delete_member_from_chatroom(chatroom['UserName'],
                                                   [friend])
                return self.status_dict.get(friend_status, '该好友仍旧与你是好友关系')
            return u'无法获取好友状态,预计已经达到接口调用限制。'
def deal_with_msg(msg):
    """ 监听并处理好友消息 """
    # print(json.dumps(msg, ensure_ascii=False))

    text = msg["Text"]  # 获取好友发送的话
    if msg['ToUserName'] == 'filehelper':
        if text in ('show', u'状态', u'显示', '当前'):
            notes = []
            notes.append(u'当前时间:' + get_local_time())
            notes.append(u'在线时长:' + get_online_time())
            for group_info in group_infos_dict.values():
                notes.append(u'群聊『{}』里一共有 {} 人。'.format(group_info['group_name'], str(group_info['count'])))
            set_note('\n'.join(notes))
        elif text in ('update', u'更新', u'刷新'):
            update_all_group_info()
        else:
            set_note('I am online...')
        return

    userid = msg['FromUserName']  # 获取好友的 uid
    nickname = msg['User']['NickName']  # 获取好友的昵称

    # 自己发送给别人的消息不作处理
    if userid == wechat_uuid:
        return

    # 黑名单用户不能加群
    if userid in black_uuid_list:
        set_note('黑名单用户『{}』消息不作任何处理。'.format(nickname))
        return

    is_add_group = add_group_compile.findall(text)  # 检查是否为加群关键词
    if is_add_group and IS_OPEN_ADD_GROUP:
        group_info_list = list(group_infos_dict.values())
        for group_info in group_info_list:
            group_name = group_info['group_name']
            if userid not in group_info['member_uid_list']:  # 用户不在此群中
                if group_info['count'] < 500:  # 群聊人数低于 500
                    time.sleep(random.randint(1, 2))  # 随机休眠 1 到 2 秒
                    # 发送群邀请
                    itchat.add_member_into_chatroom(group_info['group_uuid'], [{'UserName': userid}],
                                                    useInvitation=True)
                    note = '已给『{}』发送加群『{}』邀请通知。'.format(nickname, group_name)
                    set_note(note)
                    break
                else:
                    print('群聊『{}』人数已满。'.format(group_name))

            else:  # 用户在已在此群聊中
                print('『{}』已在群聊『{}』中。'.format(nickname, group_name))
                if not IS_ENTER_MULT_GROUP:  # 如果不让加入多个群, 则退出
                    time.sleep(random.randint(1, 2))
                    # 用户已入群,回复消息:请不要重复加群
                    itchat.send(note_add_repeat_answer, userid)
                    break
        else:
            time.sleep(random.randint(1, 2))
            # 用户已入群,回复消息:请不要重复加群
            itchat.send(note_add_repeat_answer, userid)
    else:
        # 自动回复
        if IS_OPEN_AUTO_REPLY:  # 是否已开启 AI 自动回复
            reply_text = get_nlp_textchat(text, userid)
            if not reply_text:
                return
            reply_text = reply_text + MSG_SUFFIX
        else:
            reply_text = note_auto_reply_text
        if note_auto_reply_text:
            itchat.send(reply_text, userid)
            note = '\n{}发送来的:{}\n自动回复:{}'.format(nickname, text, reply_text)
            set_note(note)
示例#33
0
import itchat

# 先登录
itchat.login()

chatroomUserName = '******'
friend = itchat.get_friends()[1]

r = itchat.add_member_into_chatroom(chatroomUserName, [friend])
if r['BaseResponse']['ErrMsg'] == '':
    status = r['MemberList'][0]['MemberStatus']
    itchat.delete_member_from_chatroom(chatroom['UserName'], [friend])
    return {
        3: u'该好友已经将你加入黑名单。',
        4: u'该好友已经将你删除。',
    }.get(status, u'该好友仍旧与你是好友关系。')