示例#1
0
def _kick(to_kick, limit_secs=0, msg=None):
    if limit_secs:
        # 加入计时黑名单
        black_list.set(to_kick, limit_secs)

    to_kick.remove()
    ret = '@{} 已被成功移出! 😈'.format(to_kick.name)

    start_new_thread(try_send, kwargs=dict(chat=to_kick, msg=msg))

    if to_kick in kick_votes:
        voters = kick_votes[to_kick][0]
        voters = '\n'.join(map(lambda x: '@{}'.format(x.name), voters))
        ret += '\n\n投票人:\n{}'.format(voters)

    return ret
示例#2
0
        now=datetime.datetime.now(),
        uptime=str(uptime).split('.')[0],
        memory='{:.2f} MB'.format(memory_usage / 1024**2),
        messages=len(messages))


def remove_qr():
    if os.path.isfile(qr_path):
        # noinspection PyBroadException
        try:
            os.remove(qr_path)
        except:
            pass


start_new_thread(run_flask_app, (qr_path, _status_text))

bot = Bot('bot.pkl',
          qr_callback=qr_callback,
          login_callback=remove_qr,
          logout_callback=_restart)
bot.auto_mark_as_read = True

if bot.self.name != bot_nick_name:
    logging.error('Wrong User!')
    bot.logout()
    _restart()

# bot.chats(update=True)

bot.enable_puid('bot.puid')
示例#3
0
文件: bot.py 项目: ishoxing/LCBot
'''


def heartbeat():
    while bot.alive:
        time.sleep(3600)
        # noinspection PyBroadException
        try:
            logger.error("LCBot is Online")
        except ResponseError as e:
            if 1100 <= e.err_code <= 1102:
                logger.critical('LCBot offline: {}'.format(e))
                _restart()


start_new_thread(heartbeat)
'''
条件邀请
'''


def condition_invite(user):
    if user.sex == 2:
        female_groups = bot.groups().search(female_group)[0]
        try:
            female_groups.add_members(user, use_invitation=True)
            pass
        except:
            pass
    if (user.province in city_group.keys() or user.city in city_group.keys()):
        try:
示例#4
0
文件: bsj.py 项目: phonen/xiaobai
    return status_text


fresh_groups()

get_logger()
#logger.error(str("登陆成功!" + get_time()))

#start_new_thread(heartbeat)


def fresh_bsj():
    r = redis.Redis(host='localhost', port=6379, decode_responses=True)
    while True:
        content = r.rpop("content1")
        if content == None:
            time.sleep(60)
        else:
            logger.error(content)
            time.sleep(60)


start_new_thread(fresh_bsj)


@bot.register(groups, except_self=False)
def sync_my_groups(msg):
    sync_message_in_groups(msg, groups)


embed()
示例#5
0
文件: bot.py 项目: OdinLin/LCBot
        else:
            index = randrange(len(group))
            target_group = group[index]
        try:
            target_group.add_members(user, use_invitation=True)
        except:
            user.send("邀请错误!机器人邀请好友进群已达当日限制。请您明日再试")
    else:
        user.send("该群状态有误,您换个关键词试试?")


fresh_groups()
get_logger()
logger.error(str("机器人登陆成功!" + get_time()))

start_new_thread(heartbeat)

# 下方为消息处理


@bot.register(msg_types=FRIENDS)
def new_friends(msg):
    '''
    处理加好友请求信息。
    如果验证信息文本是字典的键值之一,则尝试拉群。
    '''
    random_sleep()
    user = msg.card.accept()
    if msg.text.lower() in config.keyword_of_group.keys():
        invite(user, msg.text.lower())
    else:
示例#6
0
def main():
    start_new_thread(heartbeat)
    bot.join()
示例#7
0
def sync_message_in_groups(msg,
                           groups,
                           prefix=None,
                           suffix=None,
                           raise_for_unsupported=False,
                           run_async=True):
    """
    将消息同步到多个微信群中

    支持以下消息类型
        * 文本 (`TEXT`)
        * 视频(`VIDEO`)
        * 文件 (`ATTACHMENT`)
        * 图片/自定义表情 (`PICTURE`)

            * 但不支持表情商店中的表情

        * 名片 (`CARD`)

            * 仅支持公众号名片,以及自己发出的个人号名片

        * 分享 (`SHARING`)

            * 会被转化为 `标题 + 链接` 形式的纯文本

        * 语音 (`RECORDING`)

            * 会以文件方式发送

        * 地图 (`MAP`)
            
            * 会转化为 `位置名称 + 地图链接` 形式的文本消息

    :param Message msg: 需同步的消息对象
    :param Group groups: 需同步的群列表
    :param str prefix:
        * 转发时的 **前缀** 文本,原消息为文本时会自动换行
        * 若不设定,则使用默认前缀作为提示
    :param str suffix:
        * 转发时的 **后缀** 文本,原消息为文本时会自动换行
        * 默认为空
    :param bool raise_for_unsupported:
        | 为 True 时,将为不支持的消息类型抛出 `NotImplementedError` 异常
    :param bool run_async: 是否异步执行,为 True 时不堵塞线程


    ::

        my_groups = [group1, group2, group3 ...]

        @bot.register(my_groups, except_self=False)
        def sync_my_groups(msg):
            sync_message_in_groups(msg, my_groups)

    """
    def process():
        for group in groups:
            if group == msg.chat:
                continue

            msg.forward(chat=group,
                        prefix=prefix,
                        suffix=suffix,
                        raise_for_unsupported=raise_for_unsupported)

    if prefix is None:
        prefix = forward_prefix(msg.member)

    if run_async:
        start_new_thread(process, use_caller_name=True)
    else:
        process()
示例#8
0
文件: xiaobai.py 项目: phonen/xiaobai
def heartbeat():
    while bot.alive:
        time.sleep(3600)
        # noinspection PyBroadException
        try:
            logger.error(get_time() + " 机器人目前在线,共有好友 【" +
                         str(len(bot.friends())) + "】 群 【 " +
                         str(len(bot.groups())) + "】")
        except ResponseError as e:
            if 1100 <= e.err_code <= 1102:
                logger.critical('xiaobai offline: {}'.format(e))
                _restart()


start_new_thread(heartbeat)


def get_btshq(keyword):
    url = 'http://api.chbtc.com/data/v1/ticker?currency=' + keyword + '_cny'
    r = requests.get(url)
    # r.encoding = 'utf-8'
    # f = r.text.encode('utf-8')
    f = r.text
    print(f)
    doc = json.loads(f)
    return doc['ticker']['last']


'''
定时提醒bts行情
示例#9
0
                        group = bot.groups().search(g)
                        if group:
                            group[0].send(content)
                ##发送给朋友
                else:
                    friends = mail["subject"].replace(";", ";").replace(
                        ",", ";").replace(" ", ";").split(";")
                    for friend in friends:

                        receiver = bot.search(friend)
                        if receiver:
                            receiver[0].send(content)

        # 删除邮件会导致id>maxid 此时重新定义id为maxid
        if mail_id > max_mail_id:
            mail_id = max_mail_id

    except Exception as e:
        logger.debug(e)
        mail_login()


if __name__ == "__main__":
    mail_login()
    start_new_thread(heartbeat)
    start_new_thread(send_mail)
    while True:
        send_wechat()
        time.sleep(30)
    bot.join()