示例#1
0
async def ag(bot: Bot, event: CQEvent):
    if isinstance(event, PrivateMessageEvent):
        await avatar_guess.finish('本功能仅支持群聊')
    elif isinstance(event, GroupMessageEvent):
        if gma.is_playing(event.group_id):
            await avatar_guess.finish('游戏仍在进行中…')
        with gma.start_game(event.group_id) as game1:
            ids = list(_pcr_data.CHARA_NAME.keys())
            game1.answer = random.choice(ids)
            while chara.is_npc(game1.answer):
                game1.answer = random.choice(ids)
            c = chara.fromid(game1.answer)
            img = c.icon.open()
            w, h = img.size
            l = random.randint(0, w - PATCH_SIZE)
            u = random.randint(0, h - PATCH_SIZE)
            cropped = img.crop((l, u, l + PATCH_SIZE, u + PATCH_SIZE))
            cropped = MessageSegment.image(util.pic2b64(cropped))
            await bot.send(
                event,
                Message(f"猜猜这个图片是哪位角色头像的一部分?({A_TURN_TIME}s后公布答案) {cropped}"))
            await asyncio.sleep(A_TURN_TIME)
            if game1.winner:
                return
        await bot.send(event,
                       Message(f"正确答案是:{c.name} {c.icon.cqcode}\n很遗憾,没有人答对~"))
示例#2
0
async def chat_waifu(bot: Bot, event: CQEvent):
    if not priv.check_priv(event, priv.SUPERUSER):
        if random.random() < 0.50:
            await bot.send(event, Message(R.img('laopo.jpg').cqcode))
        else:
            await bot.send(event, Message(R.img('喊谁老婆呢.jpg').cqcode))
    else:
        await bot.send(event, 'mua~')
示例#3
0
async def ban_word(bot: Bot, event: CQEvent):
    user_id = event.user_id
    user_info = await bot.get_stranger_info(user_id=user_id)
    nickname = user_info.get('nickname', '未知用户')
    salmon.logger.critical(
        f'Self: {event.self_id}, Message {event.message_id} from {user_id}: {event.message}'
    )
    priv.set_block_user(user_id, timedelta(hours=8))
    pic = R.img(f"chieri{random.randint(1, 4)}.jpg").cqcode
    if isinstance(event, GroupMessageEvent):
        await bot.send(event, Message(f">{nickname}\n不理你啦!バーカー\n{pic}"))
        await util.silence(bot, event, 8 * 60 * 60)
    elif isinstance(event, PrivateMessageEvent):
        await bot.send(event, Message(f"不理你啦!バーカー\n{pic}"))
示例#4
0
async def whois(bot: Bot, event: CQEvent, state: T_State):
    name = event.get_plaintext().strip()
    if not name:
        return
    id_ = chara.name2id(name)
    confi = 100
    guess = False
    if id_ == chara.UNKNOWN:
        id_, guess_name, confi = chara.guess_id(name)
        guess = True
    c = chara.fromid(id_)
    if confi < 60:
        return
    uid = event.user_id
    user_info = await bot.get_stranger_info(user_id=uid)
    nickname = user_info.get('nickname', '未知用户')
    if not lmt.check(uid):
        if isinstance(event, GroupMessageEvent):
            await bot.send(event, f'>{nickname}\n兰德索尔花名册冷却中(剩余 {int(lmt.left_time(uid)) + 1}秒)')
            return
        elif isinstance(event, PrivateMessageEvent):
            await bot.send(event, f'兰德索尔花名册冷却中(剩余 {int(lmt.left_time(uid)) + 1}秒)')
            return
    lmt.start_cd(uid, 120 if guess else 0)
    if guess:
        if isinstance(event, GroupMessageEvent):
            msg = f'>{nickname}\n您有{confi}%的可能在找{guess_name} {c.icon.cqcode} {c.name}'
        elif isinstance(event, PrivateMessageEvent):    
            msg = f'您有{confi}%的可能在找{guess_name} {c.icon.cqcode} {c.name}'
        await bot.send(event, Message(msg))
示例#5
0
async def look_pool(bot: Bot, event: CQEvent):
    if isinstance(event, GroupMessageEvent):
        gid = str(event.group_id)
        gacha = Gacha(_group_pool[gid])
    elif isinstance(event, PrivateMessageEvent):
        name = util.normalize_str(event.get_plaintext().strip())
        if not name:
            await gacha_pool.finish('请后接区服简称\n※例:"查看卡池jp"')
        elif name in ('国', '国服', 'cn'):
            await gacha_pool.finish('请选择详细区服\n※例:"查看卡池b服"或"查看卡池台服"')
        elif name in ('b', 'b服', 'bl', 'bilibili', '陆', '陆服'):
            name = 'BL'
        elif name in ('台', '台服', 'tw', 'sonet'):
            name = 'TW'
        elif name in ('日', '日服', 'jp', 'cy', 'cygames'):
            name = 'JP'
        elif name in ('混', '混合', 'mix'):
            name = 'MIX'
        else:
            await gacha_pool.finish('未知区服,请接区服简称\n※例:"查看卡池jp"')
        gacha = Gacha(name)
    up_chara = gacha.up
    up_chara = map(lambda x: str(chara.fromname(x, star=3).icon.cqcode) + x,
                   up_chara)
    up_chara = '\n'.join(up_chara)
    await gacha_pool.finish(
        Message(
            f"本期卡池主打的角色:\n{up_chara}\nUP概率合计={(gacha.up_prob/10):.1f}%\n3★出率={(gacha.s3_prob)/10:.1f}%"
        ))
示例#6
0
async def update_seeker():
    '''
    轮询官方四格漫画更新
    若有更新则推送至订阅群
    '''
    index_api = 'https://comic.priconne-redive.jp/api/index'
    index = load_index()
    # 获取最新漫画信息
    resp = await aiohttpx.get(index_api, timeout=10)
    data = resp.json()
    id_ = data['latest_cartoon']['id']
    episode = data['latest_cartoon']['episode_num']
    title = data['latest_cartoon']['title']
    # 检查是否已在目录中
    # 同一episode可能会被更新为另一张图片(官方修正),此时episode不变而id改变
    # 所以需要两步判断
    if episode in index:
        qs = urlparse(index[episode]['link']).query
        old_id = parse_qs(qs)['id'][0]
        if id_ == old_id:
            salmon.logger.info('未检测到官漫更新')
            return
    # 确定已有更新,下载图片
    salmon.logger.info(f'发现更新 id={id_}')
    await download_comic(id_)
    # 推送至各个订阅群
    pic = R.img('priconne/comic', get_pic_name(episode)).cqcode
    msg = Message(f'プリンセスコネクト!Re:Dive公式4コマ更新!\n第{episode}話 {title}\n{pic}')
    await sv.broadcast(msg, 'PCR官方四格', 0.5)
示例#7
0
async def send_a_setu(bot, event):
    pic = get_setu()
    try:
        await bot.send(event, Message(pic.cqcode))
    except:
        salmon.logger.error(f"发送图片{pic.path}失败")
        await bot.send(event, '涩图太涩,发不出去勒...')
示例#8
0
async def gacha_jyu(bot: Bot, event: CQEvent, state: T_State):
    if isinstance(event, PrivateMessageEvent):
        name = util.normalize_str(state['name'])
        SUPER_LUCKY_LINE = 170
        if name in ('国', '国服', 'cn'):
            await gacha_10.finish('请选择详细区服\n※例:"来发十连b服"或"来发十连台服"')
        elif name in ('b', 'b服', 'bl', 'bilibili', '陆', '陆服'):
            name = 'BL'
        elif name in ('台', '台服', 'tw', 'sonet'):
            name = 'TW'
        elif name in ('日', '日服', 'jp', 'cy', 'cygames'):
            name = 'JP'
        elif name in ('混', '混合', 'mix'):
            name = 'MIX'
        else:
            await gacha_10.finish('未知区服,请接区服简称\n※例:"来发十连jp"')
        gacha = Gacha(name)
        result, hiishi = gacha.gacha_ten()
        res1 = chara.gen_team_pic(result[:5], star_slot_verbose=False)
        res2 = chara.gen_team_pic(result[5:], star_slot_verbose=False)
        res = concat_pic([res1, res2])
        res = pic2b64(res)
        res = MessageSegment.image(res)
        result = [f'{c.name}{"★"*c.star}' for c in result]
        res1 = ' '.join(result[0:5])
        res2 = ' '.join(result[5:])
        res = f'{res}\n{res1}\n{res2}'
        if hiishi >= SUPER_LUCKY_LINE:
            await bot.send(event, '恭喜海豹!おめでとうございます!')
        await gacha_10.finish(Message(f'素敵な仲間が増えますよ!\n{res}'))
示例#9
0
async def dg(bot: Bot, event: CQEvent):
    if isinstance(event, PrivateMessageEvent):
        await desc_guess.finish('本功能仅支持群聊')
    elif isinstance(event, GroupMessageEvent):
        if gmd.is_playing(event.group_id):
            await bot.finish(event, "游戏仍在进行中…")
        with gmd.start_game(event.group_id) as game2:
            game2.answer = random.choice(list(_pcr_data.CHARA_PROFILE.keys()))
            profile = _pcr_data.CHARA_PROFILE[game2.answer]
            kws = list(profile.keys())
            kws.remove('名字')
            random.shuffle(kws)
            kws = kws[:TURN_NUMBER]
            await bot.send(
                event,
                f"{PREPARE_TIME}秒后每隔{D_TURN_TIME}秒我会给出某位角色的一个描述,根据这些描述猜猜她是谁~")
            await asyncio.sleep(PREPARE_TIME)
            for i, k in enumerate(kws):
                await bot.send(event,
                               f"提示{i + 1}/{len(kws)}:\n她的{k}是 {profile[k]}")
                await asyncio.sleep(D_TURN_TIME)
                if game2.winner:
                    return
            c = chara.fromid(game2.answer)
        await bot.send(event,
                       Message(f"正确答案是:{c.name} {c.icon.cqcode}\n很遗憾,没有人答对~"))
示例#10
0
async def jyu_rec(bot: Bot, event: CQEvent, state: T_State):
    SUPER_LUCKY_LINE = 170
    await check_jewel_num(bot, event)
    uid = event.user_id
    user_info = await bot.get_stranger_info(user_id=uid)
    nickname = user_info.get('nickname', '未知用户')
    jewel_limit.increase(uid, 1500)
    if isinstance(event, GroupMessageEvent):
        gid = event.group_id
        gacha = Gacha(_group_pool[gid])
        result, hiishi = gacha.gacha_ten()
        res1 = chara.gen_team_pic(result[:5], star_slot_verbose=False)
        res2 = chara.gen_team_pic(result[5:], star_slot_verbose=False)
        res = concat_pic([res1, res2])
        res = pic2b64(res)
        res = MessageSegment.image(res)
        result = [f'{c.name}{"★"*c.star}' for c in result]
        res1 = ' '.join(result[0:5])
        res2 = ' '.join(result[5:])
        res = f'{res}\n{res1}\n{res2}'
        if hiishi >= SUPER_LUCKY_LINE:
            await bot.send(event, '恭喜海豹!おめでとうございます!')
        await gacha_10.finish(Message(f'>{nickname}\n素敵な仲間が増えますよ!\n{res}'))
    elif isinstance(event, PrivateMessageEvent):
        args = util.normalize_str(event.get_plaintext().strip())
        if args:
            state['name'] = args
示例#11
0
async def d_input_chara_name(bot: Bot, event: CQEvent):
    game2 = gmd.get_game(event.group_id)
    if not game2 or game2.winner:
        return
    c = chara.fromname(event.message.extract_plain_text())
    if c.id != chara.UNKNOWN and c.id == game2.answer:
        game2.winner = event.user_id
        n = game2.record()
        msg = f"正确答案是:{c.name}{c.icon.cqcode}\n{MessageSegment.at(event.user_id)}猜对了,真厉害!TA已经猜对{n}次了~\n(此轮游戏将在几秒后自动结束,请耐心等待)"
        await bot.send(event, Message(msg))
示例#12
0
async def feedback(bot: Bot, event: CQEvent, state: T_State):
    text = state['text']
    uid = event.user_id
    user_info = await bot.get_stranger_info(user_id=uid)
    nickname = user_info.get('nickname', '未知用户')
    su = salmon.configs.SUPERUSERS[0]
    if isinstance(event, GroupMessageEvent):
        await bot.send_private_msg(
            self_id=event.self_id,
            user_id=su,
            message=f'来自群聊{event.group_id}的{nickname}({uid}):\n========\n{text}'
        )
        await bot.send(event,
                       Message(f'>{nickname}\n您的反馈已发送至维护组!\n========\n{text}'))
    elif isinstance(event, PrivateMessageEvent):
        await bot.send_private_msg(
            self_id=event.self_id,
            user_id=su,
            message=f'{nickname}({uid}):\n========\n{text}')
        await bot.send(event, Message(f'您的反馈已发送至维护组!\n========\n{text}'))
示例#13
0
async def rank_sheet(bot: Bot, event: CQEvent, state: T_State):
    user_info = await bot.get_stranger_info(user_id=event.user_id)
    nickname = user_info.get('nickname', '未知用户')
    name = util.normalize_str(state['name'])
    if name in ('国', '国服', 'cn'):
        if isinstance(event, GroupMessageEvent):
            await rank.finish(f'>{nickname}\n请选择详细区服\n※例:"rank表b服"或"rank表台服"')
        elif isinstance(event, PrivateMessageEvent):
            await rank.finish('请选择详细区服\n※例:"rank表b服"或"rank表台服"')
    elif name in ('b', 'b服', 'bl', 'bilibili', '陆', '陆服'):
        name = 'BL'
    elif name in ('台', '台服', 'tw', 'sonet'):
        name = 'TW'
    elif name in ('日', '日服', 'jp', 'cy', 'cygames'):
        name = 'JP'
    else:
        if isinstance(event, GroupMessageEvent):
            await rank.finish(f'>{nickname}\n未知区服,请重新选择\n*rank表日服\n*rank表台服\n*rank表b服')
        elif isinstance(event, PrivateMessageEvent):
            await rank.finish('未知区服,请重新选择\n*rank表日服\n*rank表台服\n*rank表b服')
    if isinstance(event, GroupMessageEvent):
        msg = [f'>{nickname}\n表格仅供参考']
    elif isinstance(event, PrivateMessageEvent):
        msg = ['表格仅供参考']
    if name == 'JP':
        msg.append(f'※不定期搬运自图中Q群\n※广告为原作者推广,与本bot无关\nR{rank_jp} rank表:\n{pjp}')
        # pos = match.group(3)
        # if not pos or '前' in pos:
        #     msg.append(str(p4))
        # if not pos or '中' in pos:
        #     msg.append(str(p5))
        # if not pos or '后' in pos:
        #     msg.append(str(p6))
        await bot.send(event, Message('\n'.join(msg)))
    elif name == 'TW':
        msg.append(f'※不定期搬运自漪夢奈特\n※详见油管频道\nR{rank_tw} rank表:\n{ptw}')
        await bot.send(event, Message('\n'.join(msg)))
    elif name == 'BL':
        msg.append(f'※不定期搬运自B站专栏\n※制作by席巴鸽\nR{rank_cn} rank表:\n{pcn}')
        await bot.send(event, Message('\n'.join(msg)))
示例#14
0
async def get_spec_setu_res(bot: Bot, event: CQEvent, state: T_State):
    pid = state['pid']
    args = str(pid)
    if len(args) == 8:
        msg = get_spec_image(args)
        if not msg:
            await get_pic.send(
                f'没有在本地找到这张图片/不支持r18图片的提取\n请尝试此原图链接:\nhttps://pixiv.lancercmd.cc/{args}',
                call_header=True)
        else:
            await get_pic.send(Message(msg), call_header=True)
    else:
        await get_pic.send('Pid应为8位数字id哦~', call_header=True)
示例#15
0
async def read_comic(bot: Bot, event: CQEvent, state: T_State):
    episode = state['episode']
    user_info = await bot.get_stranger_info(user_id=event.user_id)
    nickname = user_info.get('nickname', '未知用户')
    if not re.fullmatch(r'\d{0,3}', episode):
        raise FinishedException
    episode = episode.lstrip('0')
    index = load_index()
    if episode not in index:
        if isinstance(event, GroupMessageEvent):
            await comic.finish(f'>{nickname}\n未查找到第{episode}话,敬请期待官方更新')
        elif isinstance(event, PrivateMessageEvent):
            await comic.finish(f'未查找到第{episode}话,敬请期待官方更新')
    title = index[episode]['title']
    pic = R.img('priconne/comic/', get_pic_name(episode)).cqcode
    if isinstance(event, GroupMessageEvent):
        await comic.finish(
            Message(
                f'>{nickname}\nプリンセスコネクト!Re:Dive公式4コマ\n第{episode}話 {title}\n{pic}'
            ))
    elif isinstance(event, PrivateMessageEvent):
        await comic.finish(
            Message(f'プリンセスコネクト!Re:Dive公式4コマ\n第{episode}話 {title}\n{pic}'))
示例#16
0
async def whois(bot: Bot, event: CQEvent):
    name = event.get_plaintext().strip()
    if not name:
        return
    id_ = chara.name2id(name)
    confi = 100
    guess = False
    if id_ == chara.UNKNOWN:
        id_, guess_name, confi = chara.guess_id(name)
        guess = True
    c = chara.fromid(id_)
    if confi < 60:
        return
    uid = event.user_id
    if not lmt.check(uid):
        await who_is.finish(f'兰德索尔花名册冷却中(剩余 {int(lmt.left_time(uid)) + 1}秒)',
                            call_header=True)
    lmt.start_cd(uid, 120 if guess else 0)
    if guess:
        msg = f'兰德索尔似乎没有叫"{name}"的人...\n角色别称补全计划: github.com/Ice-Cirno/HoshinoBot/issues/5\n您有{confi}%的可能在找{guess_name} {c.icon.cqcode} {c.name}'
        await who_is.send(Message(msg), call_header=True)
    else:
        msg = f'{c.icon.cqcode} {c.name}'
        await who_is.finish(Message(msg), call_header=True)
示例#17
0
async def ichi_rec(bot: Bot, event: CQEvent, state: T_State):
    await check_jewel_num(bot, event)
    uid = event.user_id
    jewel_limit.increase(uid, 150)
    user_info = await bot.get_stranger_info(user_id=uid)
    nickname = user_info.get('nickname', '未知用户')
    if isinstance(event, GroupMessageEvent):
        gid = event.group_id
        gacha = Gacha(_group_pool[gid])
        chara, _ = gacha.gacha_one(gacha.up_prob, gacha.s3_prob, gacha.s2_prob)
        res = f'{chara.icon.cqcode} {chara.name} {"★"*chara.star}'
        await gacha_1.finish(Message(f'>{nickname}\n素敵な仲間が増えますよ!\n{res}'))
    elif isinstance(event, PrivateMessageEvent):
        args = util.normalize_str(event.get_plaintext().strip())
        if args:
            state['name'] = args
示例#18
0
async def online_setu(bot, event, keyword):
    uid = event.user_id
    url = 'https://api.lolicon.app/setu/'
    params = salmon.configs.setu.setu_config
    if keyword != "":
        params["keyword"] = keyword
    else:
        keyword = ""
    resp = requests.get(url=url, params=params)
    status_code = resp.status_code
    if status_code != 200:
        salmon.logger.error("status_code error")
    resp_json = resp.json()
    resp_code = resp_json["code"]
    if resp_code != 0:
        if resp_code == 429:
            await bot.send(event, "API总调用额度达到上限,将随机发送本地图片")
            _flmt.start_cd(uid)
            _nlmt.increase(uid)
            await send_a_setu(bot, event)
            return
        elif resp_code == 404:
            await bot.send(event, resp_json["msg"] + ",将随机发送本地图库中的图片")
            _flmt.start_cd(uid)
            _nlmt.increase(uid)
            await send_a_setu(bot, event)
            return
        elif resp_code == 403:
            await bot.send(event, resp_json["msg"] + ",请联系维护(error code 403)")
            return
        elif resp_code == 401:
            await bot.send(event, resp_json["msg"] + ",请联系维护(error code 401)")
            return
        elif resp_code == -1:
            await bot.send(event, "API错误,请联系维护")
            return
    if uid not in salmon.configs.SUPERUSERS:
        _flmt.start_cd(uid)
        _nlmt.increase(uid)
    resp_data = resp_json["data"][0]
    img_url = resp_data["url"]
    msg = f'「{resp_data["title"]}」/「{resp_data["author"]}」\nPID:{resp_data["pid"]}\n[CQ:image,timeout=20,file={img_url}]'
    try:
        await bot.send(event, Message(msg))
    except NetworkError:
        salmon.logger.error(f"发送图片{img_url}失败: WebSocket API call timeout")
        await bot.send(event, '涩图太涩,发不出去勒...')
示例#19
0
async def give_okodokai(bot: Bot, event: CQEvent):
    uid = event.user_id
    user_info = await bot.get_stranger_info(user_id=uid)
    nickname = user_info.get('nickname', '未知用户')
    if not lmt.check(uid):
        if isinstance(event, GroupMessageEvent):
            await login.finish(f'>{nickname}\n明日はもう一つプレゼントをご用意してお待ちしますね')
        elif isinstance(event, PrivateMessageEvent):
            await login.finish('明日はもう一つプレゼントをご用意してお待ちしますね')
    lmt.increase(uid)
    present = random.choice(login_presents)
    todo = random.choice(todo_list)
    pic = Message(R.img("priconne/kokkoro_stamp.png").cqcode)
    if isinstance(event, GroupMessageEvent):
        msg = f'>{nickname}\nおかえりなさいませ、主さま' + pic + f'\n{present}を獲得しました\n私からのプレゼントです\n主人今天要{todo}吗?'
    elif isinstance(event, PrivateMessageEvent):
        msg = 'おかえりなさいませ、主さま' + pic + f'\n{present}を獲得しました\n私からのプレゼントです\n主人今天要{todo}吗?'
    await login.finish(msg)
示例#20
0
async def chain_reply(bot, event, chain, msg):
    if isinstance(event, PrivateMessageEvent):
        await bot.send(event, Message(msg))
        return chain
    elif not CHAIN_REPLY:
        await bot.send(event, msg)
        return chain
    else:
        data = {
            "type": "node",
            "data": {
                "name": '小冰',
                "uin": '2854196306',
                "content": str(msg)
            }
        }
        chain.append(data)
        return chain
示例#21
0
async def gacha_ichi(bot: Bot, event: CQEvent, state: T_State):
    if isinstance(event, PrivateMessageEvent):
        name = util.normalize_str(state['name'])
        if name in ('国', '国服', 'cn'):
            await gacha_1.finish('请选择详细区服\n※例:"来发单抽b服"或"来发单抽台服"')
        elif name in ('b', 'b服', 'bl', 'bilibili', '陆', '陆服'):
            name = 'BL'
        elif name in ('台', '台服', 'tw', 'sonet'):
            name = 'TW'
        elif name in ('日', '日服', 'jp', 'cy', 'cygames'):
            name = 'JP'
        elif name in ('混', '混合', 'mix'):
            name = 'MIX'
        else:
            await gacha_1.finish('未知区服,请接区服简称\n※例:"来发单抽jp"')
        gacha = Gacha(name)
        chara, _ = gacha.gacha_one(gacha.up_prob, gacha.s3_prob, gacha.s2_prob)
        res = f'{chara.icon.cqcode} {chara.name} {"★"*chara.star}'
        await gacha_1.finish(Message(f'素敵な仲間が増えますよ!\n{res}'))
示例#22
0
async def send_msg(msg_list, bot, event):
    result_list = []
    if not get_config('base', 'enable_forward_msg') or isinstance(
            event, PrivateMessageEvent):
        for msg in msg_list:
            try:
                result_list.append(await bot.send(event, Message(msg)))
            except:
                salmon.logger.error('图片发送失败')
                await bot.send(event, '涩图太涩,发不出去力...')
            await asyncio.sleep(1)
        return result_list
    else:
        forward_msg = render_forward_msg(msg_list)
        try:
            await bot.send_group_forward_msg(group_id=event.group_id,
                                             messages=forward_msg)
        except:
            traceback.print_exc()
            salmon.logger.error('图片发送失败')
            await bot.send(event, '涩图太涩,发不出去力...')
        await asyncio.sleep(1)
        return list(range(len(msg_list)))
示例#23
0
async def chat_clanba(bot: Bot, event: CQEvent):
    if random.random() < 0.02:
        await bot.send(event, Message(R.img('我的天啊你看看都几点了.jpg').cqcode))
示例#24
0
async def rank_sheet(bot: Bot, event: CQEvent, state: T_State):
    if config == None:
        await load_config()
    match = state['match']
    is_jp = match.group(2) == "日"
    is_tw = match.group(2) == "台"
    is_cn = match.group(2) and match.group(2) in "国陆b"
    if not is_jp and not is_tw and not is_cn:
        await rank.finish("请问您要查询哪个区服的rank表?\n*日rank表\n*台rank表\n*陆rank表",
                          call_header=True)
    msg = []
    if is_jp:
        rank_config_path = os.path.join(
            os.path.abspath(os.path.dirname(__file__)), "cache", "jp.json")
        rank_config = None
        with open(rank_config_path, "r", encoding="utf8") as fp:
            rank_config = json.load(fp)
        rank_imgs = []
        for img_name in rank_config["files"]:
            rank_imgs.append(
                f'file:///{os.path.join(os.path.dirname(__file__), "cache", "pic", f"jp_{img_name}")}'
            )
        msg.append(rank_config["notice"])
        pos = match.group(3)
        if not pos or "前" in pos:
            msg.append(f"[CQ:image,file={rank_imgs[0]}]")
        if not pos or "中" in pos:
            msg.append(f"[CQ:image,file={rank_imgs[1]}]")
        if not pos or "后" in pos:
            msg.append(f"[CQ:image,file={rank_imgs[2]}]")
        await rank.send(Message("".join(msg)), call_header=True)
    elif is_tw:
        rank_config_path = os.path.join(
            os.path.abspath(os.path.dirname(__file__)), "cache", "tw.json")
        rank_config = None
        with open(rank_config_path, "r", encoding="utf8") as fp:
            rank_config = json.load(fp)
        rank_imgs = []
        for img_name in rank_config["files"]:
            rank_imgs.append(
                f'file:///{os.path.join(os.path.dirname(__file__), "cache", "pic", f"tw_{img_name}")}'
            )
        msg.append(rank_config["notice"])
        for rank_img in rank_imgs:
            msg.append(f"[CQ:image,file={rank_img}]")
        await rank.send(Message("".join(msg)), call_header=True)
    elif is_cn:
        rank_config_path = os.path.join(
            os.path.abspath(os.path.dirname(__file__)), "cache", "cn.json")
        rank_config = None
        with open(rank_config_path, "r", encoding="utf8") as fp:
            rank_config = json.load(fp)
        rank_imgs = []
        for img_name in rank_config["files"]:
            rank_imgs.append(
                f'file:///{os.path.join(os.path.dirname(__file__), "cache", "pic", f"cn_{img_name}")}'
            )
        msg.append(rank_config["notice"])
        for rank_img in rank_imgs:
            msg.append(f"[CQ:image,file={rank_img}]")
        await rank.send(Message("".join(msg)), call_header=True)
示例#25
0
async def gacha_nibyaku(bot: Bot, event: CQEvent, state: T_State):
    if isinstance(event, PrivateMessageEvent):
        name = util.normalize_str(state['name'])
        if name in ('国', '国服', 'cn'):
            await gacha_200.finish('请选择详细区服\n※例:"来一井b服"或"来一井台服"')
        elif name in ('b', 'b服', 'bl', 'bilibili', '陆', '陆服'):
            name = 'BL'
        elif name in ('台', '台服', 'tw', 'sonet'):
            name = 'TW'
        elif name in ('日', '日服', 'jp', 'cy', 'cygames'):
            name = 'JP'
        elif name in ('混', '混合', 'mix'):
            name = 'MIX'
        else:
            await gacha_200.finish('未知区服,请接区服简称\n※例:"来一井jp"')
        gacha = Gacha(name)
        result = gacha.gacha_tenjou()
        up = len(result['up'])
        s3 = len(result['s3'])
        s2 = len(result['s2'])
        s1 = len(result['s1'])
        res = [*(result['up']), *(result['s3'])]
        random.shuffle(res)
        lenth = len(res)
        if lenth <= 0:
            res = "竟...竟然没有3★?!"
        else:
            step = 4
            pics = []
            for i in range(0, lenth, step):
                j = min(lenth, i + step)
                pics.append(
                    chara.gen_team_pic(res[i:j], star_slot_verbose=False))
            res = concat_pic(pics)
            res = pic2b64(res)
            res = MessageSegment.image(res)
        msg = [
            f"素敵な仲間が増えますよ! {res}", f"★★★×{up+s3} ★★×{s2} ★×{s1}",
            f"获得记忆碎片×{100*up}与女神秘石×{50*(up+s3) + 10*s2 + s1}!\n第{result['first_up_pos']}抽首次获得up角色"
            if up else f"获得女神秘石{50*(up+s3) + 10*s2 + s1}个!"
        ]
        if up == 0 and s3 == 0:
            msg.append("太惨了,咱们还是退款删游吧...")
        elif up == 0 and s3 > 5:
            msg.append("up呢?我的up呢?")
        elif up == 0 and s3 <= 2:
            msg.append("这位酋长,梦幻包考虑一下?")
        elif up == 0:
            msg.append("据说天井的概率只有12.16%")
        elif up <= 2:
            if result['first_up_pos'] < 50:
                msg.append("你的喜悦我收到了,滚去喂鲨鱼吧!")
            elif result['first_up_pos'] < 100:
                msg.append("已经可以了,您已经很欧了")
            elif result['first_up_pos'] > 190:
                msg.append("标 准 结 局")
            elif result['first_up_pos'] > 150:
                msg.append("补井还是不补井,这是一个问题...")
            else:
                msg.append("期望之内,亚洲水平")
        elif up == 3:
            msg.append("抽井母五一气呵成!多出30等专武~")
        elif up >= 4:
            msg.append("记忆碎片一大堆!您是托吧?")
        msg = Message('\n'.join(msg))
        await gacha_200.finish(msg)
示例#26
0
async def send_seina(bot: Bot, event: CQEvent):
    await bot.send(event, Message(R.img('星奏.png').cqcode))
示例#27
0
async def nibyaku_rec(bot: Bot, event: CQEvent, state: T_State):
    await check_tenjo_num(bot, event)
    uid = event.user_id
    user_info = await bot.get_stranger_info(user_id=uid)
    nickname = user_info.get('nickname', '未知用户')
    tenjo_limit.increase(uid)
    if isinstance(event, GroupMessageEvent):
        gid = event.group_id
        gacha = Gacha(_group_pool[gid])
        result = gacha.gacha_tenjou()
        up = len(result['up'])
        s3 = len(result['s3'])
        s2 = len(result['s2'])
        s1 = len(result['s1'])
        res = [*(result['up']), *(result['s3'])]
        random.shuffle(res)
        lenth = len(res)
        if lenth <= 0:
            res = "竟...竟然没有3★?!"
        else:
            step = 4
            pics = []
            for i in range(0, lenth, step):
                j = min(lenth, i + step)
                pics.append(
                    chara.gen_team_pic(res[i:j], star_slot_verbose=False))
            res = concat_pic(pics)
            res = pic2b64(res)
            res = MessageSegment.image(res)
        msg = [
            f">{nickname}\n"
            f"素敵な仲間が増えますよ! {res}", f"★★★×{up+s3} ★★×{s2} ★×{s1}",
            f"获得记忆碎片×{100*up}与女神秘石×{50*(up+s3) + 10*s2 + s1}!\n第{result['first_up_pos']}抽首次获得up角色"
            if up else f"获得女神秘石{50*(up+s3) + 10*s2 + s1}个!"
        ]
        if up == 0 and s3 == 0:
            msg.append("太惨了,咱们还是退款删游吧...")
        elif up == 0 and s3 > 5:
            msg.append("up呢?我的up呢?")
        elif up == 0 and s3 <= 2:
            msg.append("这位酋长,梦幻包考虑一下?")
        elif up == 0:
            msg.append("据说天井的概率只有12.16%")
        elif up <= 2:
            if result['first_up_pos'] < 50:
                msg.append("你的喜悦我收到了,滚去喂鲨鱼吧!")
            elif result['first_up_pos'] < 100:
                msg.append("已经可以了,您已经很欧了")
            elif result['first_up_pos'] > 190:
                msg.append("标 准 结 局")
            elif result['first_up_pos'] > 150:
                msg.append("补井还是不补井,这是一个问题...")
            else:
                msg.append("期望之内,亚洲水平")
        elif up == 3:
            msg.append("抽井母五一气呵成!多出30等专武~")
        elif up >= 4:
            msg.append("记忆碎片一大堆!您是托吧?")
        msg = Message('\n'.join(msg))
        await gacha_200.finish(msg)
    elif isinstance(event, PrivateMessageEvent):
        args = util.normalize_str(event.get_plaintext().strip())
        if args:
            state['name'] = args
示例#28
0
async def chat_neigui(bot: Bot, event: CQEvent):
    if random.random() < 0.10:
        await bot.send(event, Message(R.img('内鬼.png').cqcode))
示例#29
0
async def chat_queshi(bot: Bot, event: CQEvent):
    if random.random() < 0.05:
        await bot.send(event, Message(R.img('确实.jpg').cqcode))
示例#30
0
all_season[11:101] = 50
all_season[101:201] = 30
all_season[201:501] = 10
all_season[501:1001] = 5
all_season[1001:2001] = 3
all_season[2001:4001] = 2
all_season[4001:7999] = 1
all_season[8100:15001:100] = 30

server_addr = "https://pcresource.coldthunder11.com/rank/"
resize_pic = False
config = None

YUKARI_SHEET = Message(f'''{R.img('priconne/quick/黄骑充电.jpg').cqcode}
※大圈是1动充电对象 PvP测试
※黄骑四号位例外较多
※对面羊驼或中后卫坦 有可能歪
※我方羊驼算一号位
※图片搬运自漪夢奈特''')

sv_help = '''
[日/台/陆rank] rank推荐表
[查看当前/全部rank更新源]
[设置rank更新源]
[更新rank表缓存]
[挖矿15001] 矿场余钻
[黄骑充电表] 黄骑1动规律
[谁是霸瞳] 角色别称查询
'''.strip()

sv = Service('pcr-query', help_=sv_help, bundle='pcr查询')