Пример #1
0
async def message_receive(bot: Bot, event: Event, state: dict):
    # logger.info(event.dict())
    replay = event.dict()["reply"]
    if replay and str(replay["sender"]["user_id"]) in hso_config.bot:
        await Setu(
            bot, event,
            state).get_text(message_id=event.dict()["reply"]["message_id"])
Пример #2
0
async def message_receive(bot: Bot, event: Event, state: dict):
    # logger.info(event.dict())
    _reply = event.dict()["reply"]
    if _reply and str(_reply["sender"]["user_id"]) in ncm_config.bot:
        message: str = _reply["message"][0].data["text"]
        # logger.info(message)
        id = re.search("ID:([0-9]*)", message)
        # logger.info(id)
        info = setting.search(Q["group_id"] == event.dict()["group_id"])
        if info:
            data = music.search(Q["id"] == int(id[1]))[0]
            if info[0]["song"]:
                params = {
                    "group_id": event.dict()["group_id"],
                    "file": data["file"],
                    "name": data["filename"]
                }
                async with httpx.AsyncClient() as client:
                    res = await client.post(
                        "http://127.0.0.1:5700/upload_group_file",
                        params=params)
                    if res.status_code != 200:
                        logger.error("文件上传错误")
        else:
            logger.error("数据库中未发现该ID")
Пример #3
0
async def set_receive(bot: Bot, event: Event, state: dict):  # 功能设置接收
    true = ["True", "T", "true", "t"]
    false = ["False", "F", "false", "f"]
    args = str(event.get_message()).strip().split()
    state["key"] = args
    # logger.info(bot.__dict__)
    # logger.info(event.dict())
    # logger.info(state)
    mold = state["key"][0]
    info = setting.search(Q["group_id"] == event.dict()["group_id"])
    if info:
        if mold in true:
            info[0]["song"] = True
            setting.update(info, Q["group_id"] == event.dict()["group_id"])
            msg = "已开启自动下载功能"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
        elif mold in false:
            info[0]["song"] = False
            setting.update(info, Q["group_id"] == event.dict()["group_id"])
            msg = "已关闭自动下载功能"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
    else:
        setting.insert({"group_id": event.dict()["group_id"], "song": True})
Пример #4
0
async def _(bot: Bot, event: Event, state: T_State):
    # 开关检测,开则复述
    message = event.get_message()
    message_type = str(event.dict()["message_type"])
    # 来源判断
    if message_type == "group":
        id = str(event.dict()["group_id"])
        # message_type = "on_group"
        switch = (Path(".") / "apeiria_network" / "config" / "repeat" /
                  "group" / "switch.json")
        re = Path(
            "."
        ) / "apeiria_network" / "config" / "repeat" / "group" / "re.json"
    elif message_type == "private":
        id = event.get_user_id()
        # message_type = "on_user"
        switch = (Path(".") / "apeiria_network" / "config" / "repeat" /
                  "private" / "switch.json")
        re = Path(
            "."
        ) / "apeiria_network" / "config" / "repeat" / "private" / "re.json"
    try:
        with open(switch, mode="r", encoding="utf-8") as switch_json:
            switch_reader = json.load(switch_json)
    except:
        switch_reader = {}
    if id in switch_reader:
        if switch_reader[id] == "on":
            await repeat_after_me.finish(message)

    # 检测相同信息是否发送三次,若是则复述一次,然后清空数据
    i = 0
    # strmsg = {id: ['', '', '', i, message_type]}
    strmsg = {id: ["", "", "", i]}
    message = str(message)
    try:
        with open(re, mode="r", encoding="utf-8") as re_json:
            strmsg = json.load(re_json)
    except:
        strmsg = {}
    if id not in strmsg:
        with open(re, mode="w", encoding="utf-8") as re_json_file_w:
            # strmsg.update({id: [message, '', '', i, message_type]})
            strmsg.update({id: [message, "", "", i]})
            json.dump(strmsg, re_json_file_w, ensure_ascii=False, indent=4)
    pos = strmsg[id][3]
    if pos >= 2:
        strmsg[id][pos] = message
        pos -= 3
    else:
        strmsg[id][pos] = message
    pos += 1
    strmsg[id][3] = pos
    if strmsg[id][0] == strmsg[id][1] == strmsg[id][2]:
        strmsg[id][0] = strmsg[id][1] = strmsg[id][2] = ""
        re_json_file_w1 = open(re, mode="w", encoding="utf-8")
        json.dump(strmsg, re_json_file_w1, ensure_ascii=False, indent=4)
        await repeat_after_me.finish(event.get_message())
    re_json_file_w2 = open(re, mode="w", encoding="utf-8")
    json.dump(strmsg, re_json_file_w2, ensure_ascii=False, indent=4)
Пример #5
0
async def lssv_h(bot: Bot, event: Event, state: T_State):
    plus = ''
    for i in plugins:
        state = check_plugin(event.dict().get('group_id'), i)
        txt = '| {} | {}\n'.format('○' if state else '×', i)
        plus += txt

    await lssv.finish(
        '群%d的插件有:\n===========\n%s\n===========\n通过 “启用/禁用 插件名「复数个用","隔开开关插件」”'
        % (event.dict().get('group_id'), plus))
Пример #6
0
    async def change(bot: Bot, event: Event, state: T_State):
        """修改配置\r\n
        type:\r\n
        group\r\n
        private\r\n
        order:\r\n
        "setu_level"\r\n
        "original"\r\n
        "setu"\r\n
        "r18"\r\n
        "max_num"\r\n
        "revoke"\r\n
        "at"\r\n
        """
        key = state["key"]
        mold = event.dict()["message_type"]
        if mold == "group":
            config = group_config.search(
                Q["group_id"] == event.dict()['group_id'])[0]
            admins = config["admins"]
            admins.append(config["owner"])
            if int(event.get_user_id()) in admins or event.get_user_id(
            ) in hso_config.superusers:
                data = config
                before = str(config["group"][key[1]])
                if key[0] == "开启":
                    data["group"][key[1]] = True
                    after = "True"
                elif key[0] == "关闭":
                    data["group"][key[1]] = False
                    after = "False"
                else:
                    try:
                        data["group"][key[1]] = int(key[2])
                    except:
                        data["group"][key[1]] = key[2]
                    after = key[2]
                group_config.update(data,
                                    Q["group_id"] == event.dict()['group_id'])
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text(
                                              '{}:{}-->{}'.format(
                                                  key[1], before, after))))
            else:
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text('¿没权限还玩🐎¿')))

        elif mold == 'private':
            pass  # todo
Пример #7
0
async def db_update(bot: Bot, event: Event, state: dict):  # 数据库
    args = str(event.get_message()).strip().split()
    state["key"] = args
    await Power().change(bot, event, state)
    logger.info(bot.__dict__)
    logger.info(event.dict())
    logger.info(state)
Пример #8
0
async def _(bot: Bot, event: Event, state: T_State):
    message_type = str(event.dict()["message_type"])
    if message_type == "group":
        id = str(event.dict()["group_id"])
    elif message_type == "private":
        id = event.get_user_id()
    try:
        strmsg = r.get("ru"+id).split(',')
    except:
        r.set("ru"+id, ','.join(['0','0','0','0']))
        strmsg = r.get("ru"+id).split(',')
    strmsg[0] = strmsg[1] = strmsg[2] = strmsg[3] = '0'
    r.set("ru"+id, ','.join(strmsg))
    r.set("death" + id, "")
    r.set("alive" + id, "")
    r.set("magazine" + id, "")
    await clearshoot.finish("已清空弹仓")
Пример #9
0
async def disable_g(bot: Bot, event: Event, state: T_State):
    p_name = state['p_name'].split(',')
    done_plugins = list()
    for i in p_name:
        if i in plugins:
            set_plugin(event.dict().get('group_id'), i, disable=True)
            done_plugins.append(i)
    await disable_.finish('成功禁用插件: {}'.format(' | '.join(
        p for p in done_plugins)))
Пример #10
0
async def music_receive(bot: Bot, event: Event, state: dict):
    # logger.info(event.get_type())
    if event.dict()["message_type"] == "private":
        return await bot.send(event=event,
                              message=Message(
                                  MessageSegment.text("私聊无法启用解析功能")))
    # logger.info(bot.__dict__)
    # logger.info(event.dict())
    # logger.info(state)
    info = setting.search(Q["group_id"] == event.dict()["group_id"])
    id = list(filter(None, state["_matched_groups"]))  # 去除None
    if info:
        if info[0]["song"]:
            msg = f"如需下载请回复该条消息\r\n歌曲ID:{id[0]}\r\n关闭解析请使用指令\r\n#ncm f"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
            await Ncm().download(ids=id)
    else:
        setting.insert({"group_id": event.dict()["group_id"], "song": True})
Пример #11
0
async def _(bot: Bot, event: Event, state: T_State):
    message_type = str(event.dict()["message_type"])
    if message_type == "group":
        id = str(event.dict()["group_id"])
    elif message_type == "private":
        id = event.get_user_id()
    try:
        magazine = r.get("magazine" + id).split(",")
    except:
        await show_magazine.finish("还没有开始俄罗斯轮盘活动哦,请输入开枪来创建活动")
    show_result = MAGAZINE.format(
        t1=magazine[0],
        t2=magazine[1],
        t3=magazine[2],
        t4=magazine[3],
        t5=magazine[4],
        t6=magazine[5],
    )
    await show_magazine.finish(show_result)
Пример #12
0
async def _(bot: Bot, event: Event, state: T_State):
    message_type = str(event.dict()["message_type"])
    if message_type == "group":
        id = str(event.dict()["group_id"])
    elif message_type == "private":
        id = event.get_user_id()
    magazine = r.get("magazine" + id).split(",")
    spin = randint(0,5)
    magazine2 = []
    x = 0
    for i in magazine:
        try:
            magazine2.insert(x, magazine[(x+spin)])
            # 0 1 2 3 4 5
        except:
            magazine2.insert(x, magazine[(x+spin-6)])
            # spin = 1
            # spin = 5
            # 1 2 3 4 5 0
            # 5 0 1 2 3 4
        x+=1
    r.set("magazine" + id, ",".join(magazine2))
    await spin_magazine.finish("弹匣已转动")
Пример #13
0
 def __init__(self, bot: Bot, event: Event, state: dict, **requests_kwargs):
     self.bot = bot
     self.event = event
     self.state = state
     self._REQUESTS_KWARGS = requests_kwargs
     # -----------------------------------
     self.config = hso_config  # 全局设置
     self.message = event.dict()
     self.type = self.message["message_type"]
     self.setu_level = 1  # 默认涩图等级
     self.current_config = None  # 当前配置
     self.power = Power()
     self.del_list = list()
     self.r18 = None
     self.num = None
     self.tag = None
Пример #14
0
 def __init__(self, bot: Bot, event: Event, state: dict, **requests_kwargs):
     self.r18 = state["_matched_groups"][2]
     self.num = state["_matched_groups"][0]
     self._REQUESTS_KWARGS = requests_kwargs
     self.tag: list = [
         i for i in list(
             set(re.split(r",|,|\.|-| |_|/|\\", state["_matched_groups"]
                          [1]))) if i != ""
     ]  # 分割tag+去重+去除空元素
     # -----------------------------------
     self.bot = bot
     self.event = event
     self.config = hso_config  # 全局设置
     self.message = event.dict()
     self.type = self.message["message_type"]
     self.setu_level = 1  # 默认涩图等级
     self.current_config = None  # 当前配置
     self.power = Power()
     self.del_list = list()
Пример #15
0
async def _(bot: Bot, event: Event, state: T_State):
    msg = str(event.get_message()).strip()
    user_id = event.get_user_id()
    message_type = str(event.dict()["message_type"])
    if message_type == "group":
        session_id = str(event.dict()["group_id"])
        if session_id == "875857423":
            raise FinishedException
    elif message_type == "private":
        session_id = user_id
    else:
        await bot.send(event, "不支持的会话!")
        raise FinishedException

    chance = randint(1, 20)
    if 1 <= chance <= 18:
        start = time.perf_counter()
        values = {"apikey": apikey_LOLI, "r18": "0", "num": "1"}
        R18 = "false"
        picnum = 1
        direc = Path('/mnt/dm-4/nextcloud/data/patchy/files/pixiv/Normal')

        if msg[0:3] == "r18":
            direc = Path('/mnt/dm-4/nextcloud/data/patchy/files/pixiv/R18')
            R18 = "true"
            values.update({"r18": 1})
            if msg[3:4] == "*":
                # if user_id in master:
                picnum = int(msg[4:5])
                if len(msg) > (msg.index("8") + 3):
                    msg = msg[(msg.index("8") + 3):len(msg)]
                    print(msg)
                    values.update({"keyword": msg})
                # else:
                #     await bot.send(event, '呜,只有主人才能使用这个功能呢')
            elif len(msg) > (msg.index("8") + 1):
                msg = msg[(msg.index("8") + 1):len(msg)]
                print(msg)
                values.update({"keyword": msg})
        elif msg[0:1] == "*":
            # if user_id in master:
            picnum = int(msg[1:2])
            if len(msg) > (3):
                msg = msg[(3):len(msg)]
                print(msg)
                values.update({"keyword": msg})
            # else:
            #     await bot.send(event, '呜,只有主人才能使用这个功能呢')
            #     raise FinishedException
        elif msg:
            values.update({"keyword": msg})
        if picnum > 0:
            await bot.send(event, '别急!正在找图!')
        for x in range(picnum):
            try:
                dc = json.loads(request_api_params(url=URL, params=values))
                if dc["msg"] == 429:
                    await bot.send(event, '今天已经满300张啦!lsp,哼哒!!')
                    raise FinishedException
                print("=========================================")
                print(dc)
                print("=========================================")
                title = dc["data"][0]["title"]
                author = dc["data"][0]["author"]
                setu = dc["data"][0][
                    "url"]  # b64.b64_str_img_url(dc["data"][0]["url"])
            except:
                await bot.send(event, '失败了失败了失败了失...')
                raise FinishedException
            end = time.perf_counter()
            await bot.send(
                event,
                SETU_REPLY.format(title=title,
                                  author=author,
                                  setu=setu,
                                  time=round(end - start, 3)))
            try:
                scheduler.add_job(
                    func=getPic,
                    trigger='date',
                    args=[setu, direc, R18, message_type, session_id],
                    next_run_time=datetime.datetime.now(),
                    misfire_grace_time=60)
                pass
            except:
                await bot.send(event, '呜呜,图片获取失败了...')
                raise FinishedException
    elif chance == 19:
        img = choice(['SP.jpg', 'SP1.jpg', 'SP2.jpg'])
        img = Path('.') / 'apeiria_network' / 'data' / 'emoji' / f'{img}'
        img = img.resolve()
        await bot.send(event, Message(f'[CQ:image,file=file:///{img}]'))
        raise FinishedException

    elif chance == 20:
        img = choice([
            'GDZ.png', 'SHZY1.jpg', 'SHZY2.jpg', 'SHZY3.jpg', 'SHZY4.jpg',
            'SHZY5.jpg', 'SHZY6.jpg'
        ])
        img = Path(
            '.') / 'apeiria_network' / 'data' / 'img' / 'niceIMG' / f'{img}'
        img = img.resolve()
        await bot.send(event, Message(f'[CQ:image,file=file:///{img}]'))
        raise FinishedException
Пример #16
0
async def handle_city(bot: Bot, event: Event, state: T_State):
    startTime = time.perf_counter()
    cityname = state["city"]
    # 判断查询
    if cityname[0:2] == "天气预报":
        cityname = str(cityname[2:len(cityname)]).strip().replace(" ", "")
    weatherinfo = weather_info(cityname, 1)
    responsecode = weatherinfo.status_code
    user_id = event.get_user_id()
    area_reader = getAreaJson()
    # 第一次查询绑定
    if user_id not in area_reader:
        if responsecode == 555:
            await weather_pre_report.finish(randomNegative() + "查询失败,地名输入错误")
        elif responsecode == 403:
            await weather_pre_report.finish(randomNegative() +
                                            "API访问次数用完了,请续费API")
        _weather_bind(user=user_id, cityname=cityname)
        msg = "绑定成功,如果要更换绑定城市\n可使用[天气绑定 城市名]"
        await bot.send(event=event, message=msg)

    message_type = str(event.dict()["message_type"])
    dc = json.loads(weatherinfo.text)

    if responsecode == 555:
        await weather_pre_report.finish(randomNegative() + "地名输入错误")
    elif responsecode == 403:
        await weather_pre_report.finish(randomNegative() + "API访问次数用完了,请续费API")

    if message_type == "group":
        group_id = str(event.dict()["group_id"])
        member_info = await bot.call_api("get_group_member_info",
                                         group_id=group_id,
                                         user_id=user_id)
        card = member_info["card"]
    elif message_type == "private":
        member_info = await bot.call_api("get_stranger_info", user_id=user_id)
        card = ""

    args = answer_sexcall_akubi(member_info=member_info,
                                user=user_id,
                                master=master,
                                card=card)
    answer = args[0]
    sexcall = args[1]
    akubi = args[2]
    msg = dc["showapi_res_body"]
    positive = randomPositive()

    # 获取完整天气信息测试
    # FULL_WEATHER_PATH = Path(".") / "weather_full_info.json"

    # with open(FULL_WEATHER_PATH, mode="w", encoding="utf-8") as area_json_file_w:
    #     json.dump(msg, area_json_file_w, ensure_ascii=False)

    msg0 = positive + answer + sexcall + ", 以下为" + cityname + "七日天气预报" + akubi + "\n"
    # msg0 += ""
    for i in range(1, 8):
        curwea = msg["f" + str(i)]
        dayweather = curwea["day_weather"]
        daytempt = curwea["day_air_temperature"]
        nightweather = curwea["night_weather"]
        nighttempt = curwea["night_air_temperature"]
        msg0 += ("Day" + str(i) + " 白天:" + dayweather + "," + daytempt +
                 "°C   夜间:" + nightweather + "," + nighttempt + "°C\n")
    endTime = time.perf_counter()
    times = round(endTime - startTime, 3)
    msg0 += "------------------------\n"
    msg0 += "Complete time:" + str(times) + "s"
    await weather_pre_report.finish(msg0)
Пример #17
0
async def _(bot: Bot, event: Event, state: T_State):
    message_type = str(event.dict()["message_type"])
    user_id = event.get_user_id()
    try:
        bullets_num = int(state["bullets_num"])
    except:
        await shoot.finish(randomNegative() + "请输入1到6以内的数字重试")
    id = state["id"]
    strmsg = r.get("ru"+id).split(',')
    # 子弹数非法结束
    if not (bullets_num >= 1 and bullets_num <= 6):
        await shoot.finish(randomNegative() + "请输入1到6以内的数字重试")
    if strmsg[0] == '0':
        # 初始化数据,初始化 子弹数量,开枪次数,命中数
        strmsg[0] = '1'
        strmsg[1] = str(bullets_num)
        strmsg[2] = '0'
        strmsg[3] = '0'
        r.set("ru"+id, ','.join(strmsg))
        r.set("death" + id, "")
        r.set("alive" + id, "")
        magazine = []
        for i in range(0, 6 - int(strmsg[1])):
            magazine.append("0")
        for i in range(0, int(strmsg[1])):
            magazine.insert(randint(0, len(magazine)), "1")
        r.set("magazine" + id, ",".join(magazine))
        bul = choice(
            [
                "子弹装好了",
                "子弹填充完毕~",
                "LMG MOUNTED AND LOADED",
                "五十已到",
            ]
        )
        await shoot.finish(bul)
    if r.get("death" + id) == None:
        r.set("death" + id, "")
    if r.get("alive" + id) == None:
        r.set("alive" + id, "")
    magazine = r.get("magazine" + id).split(",")
    # 1 、子弹填装数 2、枪击发数 3、子弹击中数
    # 当前子弹数量 = 子弹填装数 - 子弹击中数
    # 当前剩余枪数 = 6 - 枪击发数
    if(int(strmsg[1]) >= 6):
        if((int(strmsg[1]) - int(strmsg[3])) == (6 - int(strmsg[2]))):
            chance = randint(1,10)
            if (chance==1):
                magazine[0] = "0"
                strmsg[3] = str((int(strmsg[3])+1))
            else:
                magazine[0] = "1"
    if magazine[0] == "1":
        # 随机1到剩余开枪次数 小于等于子弹数量时命中
        # 命中 开枪次数+1 击中+1
        magazine.pop(0)
        magazine.append("-1")
        r.set("magazine" + id, ",".join(magazine))
        strmsg[2] = str((int(strmsg[2])+1))
        strmsg[3] = str((int(strmsg[3])+1))
        r.set("ru"+id, ','.join(strmsg))
        msg = [
            ["很不幸,你死了"],
            ["砰!枪响人亡"],
            ["砰!枪响人亡", "你死了"],
            ["开完这枪,我就回家和老婆结婚\n——你如是宣言到", "汝之妻,吾养之\nYou Died...."],
            ["你是一个有故事的人,但是子弹并不想知道这些\n它只看见了白花花的脑浆", "你死了"],
            ["啦哒哒哒哒哒!啦哒哒哒哒哒!", "You Died...."],
            ["BOOOOOM HEADSHOT!!", "You Died...."],
            ["哒哒哒哒哒!", "啊,你死了"],
        ]
        if message_type == "group":
            group_id = str(event.dict()["group_id"])
            member_info = await bot.call_api(
                "get_group_member_info", group_id=group_id, user_id=user_id
            )
            card = member_info["card"]
        elif message_type == "private":
            member_info = await bot.call_api("get_stranger_info", user_id=user_id)
            card = ""
        nickname = member_info["nickname"]
        if card == "" or card == None:
            call = nickname
        else:
            call = card
        # 拼接字符串 等效
        r.append("death" + id, call + ",")
        # r.set("death" + id, r.get("death" + id) + call + ",")
        for a in msg[randint(0, len(msg) - 1)]:
            await bot.send(event, a)
    else:
        # miss 开枪次数+1
        magazine.pop(0)
        magazine.append("-1")
        r.set("magazine" + id, ",".join(magazine))
        strmsg[2] = str((int(strmsg[2])+1))
        r.set("ru"+id, ','.join(strmsg))
        msg = [
            ["哦?你侥幸活了下来呢~"],
            ["砰!\n随着一声清脆的枪响,你...", "不好意思,念错了"],
            ["你对此胸有成竹,你曾经在精神病院向一个老汉学习过用手指夹住射出子弹的功夫,在子弹射出的一瞬间,你把他塞了回去"],
            ["你向众神祈祷,众神仿佛听见了你的呼唤", "你自信的扣下了扳机,当然,枪没有响"],
            ["治疗感染,一次...什么?你没有感染?出去!!"],
            ["你颤抖的手写完了遗书上的最后一个字", "虽然很抱歉,但是这张纸可以留到以后再用了"],
            # ["冰冷的子弹击中了你的牛子\n你活了下来","但是你的牛子没了,你试问\n这一切都值得吗"],
            # ["你非常的确信,枪膛里下一发是有子弹的","但是这颗子弹火药貌似受潮了~\n恭喜你捡回了一条小命"],
        ]
        if message_type == "group":
            group_id = str(event.dict()["group_id"])
            member_info = await bot.call_api(
                "get_group_member_info", group_id=group_id, user_id=user_id
            )
            card = member_info["card"]
        elif message_type == "private":
            member_info = await bot.call_api("get_stranger_info", user_id=user_id)
            card = ""
        nickname = member_info["nickname"]
        if card == "" or card == None:
            call = nickname
        else:
            call = card
        # 拼接字符串 等效
        r.append("alive" + id, call + ",")
        # r.set("alive" + id, r.get("alive" + id) + call + ",")
        for a in msg[randint(0, len(msg) - 1)]:
            await bot.send(event, a)
    if int(strmsg[3]) >= int(strmsg[1]):
        # 命中次数 == 子弹次数 结束会话
        strmsg[0] = strmsg[1] = strmsg[2] = strmsg[3] = '0'
        r.set("ru"+id, ','.join(strmsg))
        death = r.get("death" + id).strip(",").split(",")
        alive = r.get("alive" + id).strip(",").split(",")
        count = {}
        for de in death:
            count.update({de: [0, death.count(de)]})
        if alive != [""]:
            for al in alive:
                try:
                    a = count[al][1]
                except:
                    a = 0
                count.update({al: [alive.count(al), a]})
        r.set("death" + id, "")
        r.set("alive" + id, "")
        r.set("magazine" + id, "")
        msg = ""
        i = 0
        for c in count:
            i += 1
            msg += c + ":胜利" + str(count[c][0]) + " 死亡" + str(count[c][1])
            if i != len(count):
                msg += "\n"
        await bot.send(event, "感谢各位的参与,让我们看一下游戏结算:")
        await shoot.finish(msg)
    await bot.send(
        event,
        "欢迎下一位。已经开了"
        + strmsg[2]
        + "枪,还剩"
        + str(int(strmsg[1]) - int(strmsg[3]))
        + "发子弹。",
    )
Пример #18
0
    async def change(bot: Bot, event: Event, state: T_State):
        """修改配置\r\n
        type:\r\n
        group\r\n
        private\r\n
        order:\r\n
        "setu_level"\r\n
        "original"\r\n
        "setu"\r\n
        "r18"\r\n
        "max_num"\r\n
        "revoke"\r\n
        "at"\r\n
        """
        key = state["key"]
        mold = event.dict()["message_type"]
        if mold == "group":
            config = group_config.search(
                Q["group_id"] == event.dict()["group_id"])[0]
            admins = config["admins"]
            admins.append(config["owner"])
            user_id = event.get_user_id()
            data = config
            key1 = key[0]
            before = str(config["group"][key1])
            true = ["True", "T", "true", "t"]
            false = ["False", "F", "false", "f"]
            if key[1] in true:
                data["group"][key1] = True
                after = "True"
                if key1 == "r18":
                    data["group"]["setu_level"] = 2
            elif key[1] in false:
                data["group"][key1] = False
                after = "False"
                if key1 == "r18":
                    data["group"]["setu_level"] = 1
            else:
                after: str = key[1]
                try:
                    data["group"][key1] = int(after)
                except:
                    data["group"][key1] = after
            if int(user_id) in admins or user_id in hso_config.superusers:
                group_config.update(data,
                                    Q["group_id"] == event.dict()["group_id"])
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text(
                                              "{}:{}-->{}".format(
                                                  key1, before, after))))
            else:
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text("¿没权限还玩🐎¿")))

        elif mold == "private":
            user_id = event.get_user_id()
            config = group_config.search(Q["user_id"] == user_id)[0]
            data = config
            key1 = key[0]
            before = str(config[key1])
            true = ["True", "T", "true", "t"]
            false = ["False", "F", "false", "f"]
            if key[1] in true:
                data[key1] = True
                after = "True"
                if key1 == "r18":
                    data["setu_level"] = 2
            elif key[1] in false:
                data[key1] = False
                after = "False"
                if key1 == "r18":
                    data["setu_level"] = 1
            else:
                after: str = key[1]
                try:
                    data[key1] = int(after)
                except:
                    data[key1] = after
            group_config.update(data, Q["user_id"] == user_id)
            return await bot.send(event=event,
                                  message=Message(
                                      MessageSegment.text("{}:{}-->{}".format(
                                          key1, before, after))))
Пример #19
0
async def handle_city(bot: Bot, event: Event, state: T_State):
    startTime = time.perf_counter()
    cityname = state["city"]
    # 判断是否二次查询
    if cityname[0:2] == "天气":
        cityname = str(cityname[2:len(cityname)]).strip().replace(" ", "")
    weatherinfo = weather_info(cityname, 0)
    responsecode = weatherinfo.status_code
    user_id = event.get_user_id()
    area_reader = getAreaJson()
    if user_id not in area_reader:
        if responsecode == 555:
            await weather.finish(randomNegative() + "查询失败,地名输入错误")
        elif responsecode == 403:
            await weather.finish(randomNegative() + "API访问次数用完了,请续费API")
        _weather_bind(user=user_id, cityname=cityname)
        msg = "绑定成功,如果要更换绑定城市\n可使用[天气绑定 城市名]"
        await bot.send(event=event, message=msg)

    if responsecode == 555:
        await weather.finish(randomNegative() + "地名输入错误")
    elif responsecode == 403:
        await weather.finish(randomNegative() + "API访问次数用完了,请续费API")

    message_type = str(event.dict()["message_type"])
    dc = json.loads(weatherinfo.text)

    if message_type == "group":
        group_id = str(event.dict()["group_id"])
        member_info = await bot.call_api("get_group_member_info",
                                         group_id=group_id,
                                         user_id=user_id)
        card = member_info["card"]
    elif message_type == "private":
        member_info = await bot.call_api("get_stranger_info", user_id=user_id)
        card = ""

    args = answer_sexcall_akubi(member_info=member_info,
                                user=user_id,
                                master=master,
                                card=card)
    answer = args[0]
    sexcall = args[1]
    akubi = args[2]

    msg = dc["showapi_res_body"]
    now = msg["now"]
    f1 = msg["f1"]

    city_weather = WEATHER_REPLY.format(
        positive=randomPositive(),
        answer=answer,
        sexcall=sexcall,
        area=now["aqiDetail"]["area"],
        akubi=akubi,
        realtime=now["temperature_time"],
        realweather=now["weather"],
        realtempt=now["temperature"],
        realwinddirect=now["wind_direction"],
        realwindpower=now["wind_power"],
        dayweather=f1["day_weather"],
        daytempt=f1["day_air_temperature"],
        daywinddirect=f1["day_wind_direction"],
        daywindpower=f1["day_wind_power"],
        nightweather=f1["night_weather"],
        nighttempt=f1["night_air_temperature"],
        nightwinddirect=f1["night_wind_direction"],
        nightwindpower=f1["night_wind_power"],
        clothrec=f1["index"]["clothes"]["desc"],
    )
    endTime = time.perf_counter()
    times = round(endTime - startTime, 3)
    city_weather += "\n------------------------\n"
    city_weather += "Complete time:" + str(times) + "s"
    await weather.finish(city_weather)
Пример #20
0
def pingbi(event: Event) -> bool:
    goup_id = event.dict().get('group_id')
    if goup_id:
        if str(goup_id) in ['389410891']:
            return True
    return False
Пример #21
0
 async def _is_enabled(bot: Bot, event: Event, state: T_State) -> bool:
     status = check_plugin(event.dict().get('group_id'), self.name)
     return status
Пример #22
0
async def _(bot: Bot, event: Event, state: T_State):
    message_type = str(event.dict()["message_type"])
    # 来源判断
    if message_type == "group":
        id = str(event.dict()["group_id"])
    elif message_type == "private":
        id = event.get_user_id()
    # strmsg = [0, 0, 0, 0]
    # ru_status = strmsg[0]
    # bullets_num = strmsg[1]
    # shoot_times = strmsg[2]
    # hit_times = strmsg[3]

    # 为None或没有则初始化
    try:
        strmsg = r.get("ru"+id).split(',')
    except:
        r.set("ru"+id, ','.join(['0','0','0','0']))
        strmsg = r.get("ru"+id).split(',')

    args = str(event.get_message()).strip()
    if args:
        # 子弹数非法结束
        try:
            int(args)
        except:
            await shoot.finish(randomNegative() + "请输入1到6以内的数字重试")
        if not (int(args) >= 1 and int(args) <= 6):
            await shoot.finish(randomNegative() + "请输入1到6以内的数字重试")
        # 判断会话状态是否为active
        if strmsg[0] == '0':
            # 否,则初始化数据,初始化 子弹数量,开枪次数,命中数。
            strmsg[0] = '1'
            strmsg[1] = args
            strmsg[2] = '0'
            strmsg[3] = '0'
            # print(strmsg)
            r.set("ru"+id, ','.join(strmsg))
            r.set("death" + id, "")
            r.set("alive" + id, "")
            magazine = []
            for i in range(0, 6 - int(strmsg[1])):
                magazine.append("0")
            for i in range(0, int(strmsg[1])):
                magazine.insert(randint(0, len(magazine)), "1")
            r.set("magazine" + id, ",".join(magazine))
            bul = choice(
                [
                    "子弹装好了",
                    "子弹填充完毕~",
                    "LMG MOUNTED AND LOADED",
                    "五十已到",
                ]
            )
            await shoot.finish(bul)
        else:
            # 是,则读取子弹数量。
            await shoot.finish("之前的转盘活动并没有迎来结局,请完成上一场活动之后再开始新的活动")
    else:
        # 判断会话状态是否为active
        if strmsg[0] == '1':
            state["bullets_num"] = strmsg[1]
            state["id"] = id
        elif strmsg[0] == '0':
            state["id"] = id
Пример #23
0
async def message_receive(bot: Bot, event: Event, state: dict):  # 涩图调用
    logger.info(bot.__dict__)
    logger.info(event.dict())
    logger.info(state)
    await Setu(bot, event, state).main()