async def boss_slayer(bot, ev: EventInterface):
    server = re.findall("国服|日服?|台服?|b服?|cn|jp|tw", ev.get_param().remain, re.I)
    # 默认为国服
    if len(server) == 0 or server[0] in [
            '国服', 'b', 'B', 'b服', 'B服', 'CN', 'cn'
    ]:
        servertag = '**国服合刀**'
        ext0 = 100  # 当前版本国服补偿刀10秒起
    else:
        servertag = '**日服/台服合刀**'
        ext0 = 110  # 日服补偿刀20秒起

    remain = ev.get_param().remain
    prm = re.findall("\d+[wW万]", remain)
    if len(prm) == 3:
        hp = int(prm[0][:-1]) * 10000
        dmg1 = int(prm[1][:-1]) * 10000
        dmg2 = int(prm[2][:-1]) * 10000
    else:
        prm = re.findall("\d+", remain)
        if len(prm) == 3:
            hp = int(prm[0])
            dmg1 = int(prm[1])
            dmg2 = int(prm[2])
        else:
            usage = "使用方法:\n合刀计算 [服务器] BOSS剩余血量 伤害1 伤害2"
            await bot.kkr_send(ev, usage, at_sender=True)
            return

    if dmg1 + dmg2 < hp:
        msg = '0x0 这两刀合起来还打不死BOSS喔'
    else:
        if dmg1 >= hp and dmg2 >= hp:
            ans1 = f'先出{dmg1:,},BOSS直接就被打死啦'
            ans2 = f'先出{dmg2:,},BOSS直接就被打死啦'
        elif dmg1 >= hp and dmg2 < hp:
            ans1 = f'先出{dmg1:,},BOSS直接就被打死啦'
            ext2 = min(math.ceil(ext0 - ((hp - dmg2) / dmg1) * 90), 90)
            ans2 = f'先出{dmg2:,}再出{dmg1:,},返还时间{ext2}秒'
        elif dmg1 < hp and dmg2 >= hp:
            ext1 = min(math.ceil(ext0 - ((hp - dmg1) / dmg2) * 90), 90)
            ans1 = f'先出{dmg1:,}再出{dmg2:,},返还时间{ext1}秒'
            ans2 = f'先出{dmg2:,},BOSS直接就被打死啦'
        else:
            ext1 = min(math.ceil(ext0 - ((hp - dmg1) / dmg2) * 90), 90)
            ans1 = f'先出{dmg1:,}再出{dmg2:,},返还时间{ext1}秒'
            ext2 = min(math.ceil(ext0 - ((hp - dmg2) / dmg1) * 90), 90)
            ans2 = f'先出{dmg2:,}再出{dmg1:,},返还时间{ext2}秒'
        not_my_fault = "计算结果仅供参考,可能与游戏内实际返还时间有偏差"
        msg = '\n'.join([servertag, ans1, ans2, not_my_fault])
    await bot.kkr_send(ev, msg, at_sender=False)
Ejemplo n.º 2
0
async def whois(bot, ev: EventInterface):
    uid = ev.get_author_id
    if not lmt.check(uid):
        await bot.kkr_send(ev, f'兰德索尔花名册冷却中(剩余 {int(lmt.left_time(uid)) + 1}秒)', at_sender=True)
        return
    lmt.start_cd(uid)

    name = ev.get_param().remain
    if not name:
        await bot.kkr_send(ev, '请发送"谁是"+别称,如"谁是霸瞳"')
        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 guess:
        lmt.start_cd(uid, 120)
        msg = f'兰德索尔似乎没有叫"{name}"的人...\n角色别称补全计划: github.com/Ice-Cirno/HoshinoBot/issues/5'
        await bot.kkr_send(ev, msg)
        msg = f'\n您有{confi}%的可能在找{guess_name} '
        await bot.kkr_send(ev, msg)

    if confi > 60:
        await bot.kkr_send(ev, c.icon)
        await bot.kkr_send(ev, c.name, at_sender=True)
Ejemplo n.º 3
0
async def switch_service(bot, ev: EventInterface, turn_on: bool):
    action_tip = '启用' if turn_on else '禁用'

    names = ev.get_param().remain.split()
    if not names:
        await bot.kkr_send(ev, f"空格后接要{action_tip}的服务名", at_sender=True)
        return
    group_id = ev.get_group_id()
    svs = Service.get_loaded_services()
    succ, notfound = [], []
    for name in names:
        if name in svs:
            sv = svs[name]
            u_priv = priv.get_user_priv(ev.get_author())
            if u_priv >= sv.manage_priv:
                sv.set_enable(group_id) if turn_on else sv.set_disable(
                    group_id)
                succ.append(name)
            else:
                try:
                    await bot.kkr_send(
                        ev,
                        f'权限不足!{action_tip}{name}需要:{sv.manage_priv},您的:{u_priv}\n{PRIV_TIP}',
                        at_sender=True)
                except:
                    pass
        else:
            notfound.append(name)
    msg = []
    if succ:
        msg.append(f'已{action_tip}服务:' + ', '.join(succ))
    if notfound:
        msg.append('未找到服务:' + ', '.join(notfound))
    if msg:
        await bot.kkr_send(ev, '\n'.join(msg), at_sender=True)
async def _select_(bot: KokkoroBot, ev: EventInterface):
    global g_uid_dict, g_status_dict
    gid = ev.get_group_id()
    uid = ev.get_author_id()
    horse_status: HorseStatus = g_status_dict.get(gid)
    if horse_status == None:
        await bot.kkr_send(ev, f'比赛尚未开始,发送指令"赛🐴"发起新的游戏', at_sender=True)
    elif not horse_status.multi_player and uid != g_uid_dict[gid]:
        await bot.kkr_send(ev, f'仅限比赛发起人进行选择~\n发送指令"多人赛🐴"发起多人游戏')
    else:
        pkey = ev.get_param().remain
        id_ = chara.name2id(pkey)
        s_chara = chara.fromid(id_)
        if s_chara.name not in g_status_dict[gid].charactors:
            await bot.kkr_send(ev, f'所选角色未在参赛角色中')
            return
        success = horse_status.add_player(uid, s_chara.name)
        if not success:
            await bot.kkr_send(ev,
                               f'已经有人选过 {s_chara.name} 了 0x0',
                               at_sender=True)
        elif horse_status.is_finished():
            await bot.kkr_send(ev, f'比赛开始')
            res = horse_status.get_result()
            await bot.kkr_send(ev, f'{res}')
            # Clean up
            clean(gid)
        else:
            await bot.kkr_send(ev, f'已选择{s_chara.name}', at_sender=True)
Ejemplo n.º 5
0
async def public_recruit(bot: KokkoroBot, ev: EventInterface):
    over4_only = True
    args = ev.get_param().remain
    if args[:2] in ['-a', '全部']:
        over4_only = False
        args = args[2:]

    tags = args.split()
    size = len(tags)
    if size == 0:
        await bot.kkr_send(ev, HELP_MESSAGE)
        return

    for i in range(size):
        if tags[i][-2:] == "干员":
            tags[i] = tags[i][:-2]
    valid, _tag = validate_tags(tags)
    if not valid:
        await bot.kkr_send(ev, f'无效 TAG:{_tag}')
        return

    workers = get_workers(tags, worker_infos, over4_only)
    if len(workers) == 0:
        if over4_only:
            await bot.kkr_send(
                ev, f'无法保证招聘四星及以上干员\n若希望显示所有可能干员请使用命令:公开招募 -a {args}')
        else:
            await bot.kkr_send(ev, '无匹配干员')
    else:
        msg = format_workers(workers)
        await bot.kkr_send(ev, msg)
async def manaburner(bot, ev: EventInterface):
    prm = re.findall("\d+", ev.get_param().remain)
    if len(prm) == 0 or len(prm) >= 4:
        usage = "使用方法:\n角色计算 [[角色数量] 当前等级 ]目标等级"
        await bot.kkr_send(ev, usage, at_sender=True)
        return
    elif len(prm) == 1:
        n = 1
        l = 1
        r = int(prm[0])
    elif len(prm) == 2:
        n = 1
        l = int(prm[0])
        r = int(prm[1])
    elif len(prm) == 3:
        n = int(prm[0])
        l = int(prm[1])
        r = int(prm[2])
    try:
        mana = (total_mana[r] - total_mana[l]) * n
        exp = (total_exp[r] - total_exp[l]) * n
        bottle = math.ceil(exp / 7500)
        buyexp = math.ceil(exp / 0.375)
        msg = f"{n}名角色从{l}级升到{r}级需要:\n{mana:,} mana\n{exp:,} 经验\n约{bottle:,}瓶超级经验药水(价值 {buyexp:,} mana)"
    except:
        msg = "0x0 好像超出了等级上限呢"
    await bot.kkr_send(ev, msg, at_sender=True)
Ejemplo n.º 7
0
async def lssv(bot: KokkoroBot, ev: EventInterface):
    parser = ArgumentParser()
    parser.add_argument('-a', '--all', action='store_true')
    parser.add_argument('-i', '--invisible', action='store_true')
    parser.add_argument('-g', '--group', type=int, default=0)
    args = parser.parse_args(ev.get_param().remain)

    verbose_all = args.all
    only_hidden = args.invisible
    if ev.get_author_id() in bot.config.SUPER_USER:
        gid = args.group or ev.get_group_id()
        if not gid:
            await bot.kkr_send(ev, 'Usage: -g|--group <group_id> [-a|--all]')
            return
    else:
        gid = ev.get_group_id()

    msg = [f"群{gid}服务一览:"]
    svs = Service.get_loaded_services().values()
    svs = map(lambda sv: (sv, sv.check_enabled(gid)), svs)
    key = cmp_to_key(lambda x, y: (y[1] - x[1]) or (-1 if x[0].name < y[
        0].name else 1 if x[0].name > y[0].name else 0))
    svs = sorted(svs, key=key)
    for sv, on in svs:
        if verbose_all or (sv.visible ^ only_hidden):
            x = '○' if on else '×'
            msg.append(f"|{x}| {sv.name}")
    await bot.kkr_send(ev, '\n'.join(msg))
Ejemplo n.º 8
0
async def rank_sheet(bot, ev: EventInterface):
    match = ev.get_param().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 bot.kkr_send(
            ev,
            '\n请问您要查询哪个服务器的rank表?\n*日rank表\n*台rank表\n*B服rank表\n',
            at_sender=True)
        return
    msg = [
        '\n※表格仅供参考,升r有风险,强化需谨慎\n※一切以会长要求为准——',
    ]
    if is_jp:
        msg.append('※不定期搬运自图中Q群\n※广告为原作者推广,与本bot无关\nR17-5 rank表:')
        await bot.kkr_send(ev, '\n'.join(msg), at_sender=True)
        pos = match.group(3)
        if not pos or '前' in pos:
            await bot.kkr_send(ev, p4, at_sender=True)
        if not pos or '中' in pos:
            await bot.kkr_send(ev, p5, at_sender=True)
        if not pos or '后' in pos:
            await bot.kkr_send(ev, p6, at_sender=True)

    elif is_tw:
        msg.append(f'※不定期搬运自漪夢奈特\n※油管频道有介绍视频及原文档\nR16-5 rank表:\n')
        await bot.kkr_send(ev, '\n'.join(msg), at_sender=True)
        await bot.kkr_send(ev, p1)
        await bot.kkr_send(ev, p2)
    elif is_cn:
        await bot.kkr_send(ev, '\n'.join(msg), at_sender=True)
        await bot.kkr_send(ev, cn_rank)
async def cherulize(bot: KokkoroBot, ev: EventInterface):
    s = ev.get_param().remain
    if len(s) > 500:
        await bot.kkr_send(ev, '切、切噜太长切不动勒切噜噜...', at_sender=True)
        return
    # if random.random() < 0.2:
    #     await cheru_record(bot, ev)
    await bot.kkr_send(ev, '切噜~♪' + str2cheru(s))
Ejemplo n.º 10
0
async def decherulize(bot: KokkoroBot, ev: EventInterface):
    s = ev.get_param().remain
    if len(s) > 1501:
        await bot.kkr_send(ev, '切、切噜太长切不动勒切噜噜...', at_sender=True)
        return
    msg = bot.kkr_at(ev.get_author_id()) + '的切噜噜是:\n' + escape(cheru2str(s))
    # if random.random() < 0.2:
    #     await cheru_record(bot, ev)
    await bot.kkr_send(ev, msg)
async def arena_miner(bot, ev: EventInterface):
    try:
        rank = int(ev.get_param().remain)
    except:
        return
    rank = np.clip(rank, 1, 15001)
    s_all = all_season[1:rank].sum()
    s_this = this_season[1:rank].sum()
    msg = f"最高排名奖励还剩{s_this}钻\n历届最高排名还剩{s_all}钻"
    await bot.kkr_send(ev, msg, at_sender=True)
Ejemplo n.º 12
0
async def _select_(bot, ev: EventInterface):
    global g_uid, g_result
    uid = ev.get_author_id()
    if uid != g_uid and g_result != []:
        await bot.kkr_send(ev, f'仅限比赛发起人进行选择~')
    elif uid != g_uid and g_result == []:
        await bot.kkr_send(ev, f'上一场比赛已经结束,您可以用“@bot赛跑模拟”发起新的比赛', at_sender=True)
    elif uid == g_uid:
        await select_player(bot, ev,  ev.get_param().remain)
    else:
        await bot.kkr_send(ev, f'出现错误,请联系维护组嘤嘤嘤')
Ejemplo n.º 13
0
 async def wrapper(bot: KokkoroBot, ev: EventInterface):
     try:
         args = parser.parse(ev.get_param().args, ev)
     except ParseError as e:
         await bot.kkr_send(ev, e.message, at_sender=True)
         return
     try:
         return await func(bot, ev, args)
     except ClanBattleError as e:
         await bot.kkr_send(ev, e.message, at_sender=True)
     except Exception as e:
         await bot.kkr_send(ev, f'{SORRY} 发生未知错误', at_sender=True)
         raise e
Ejemplo n.º 14
0
async def boss_slayer(bot, ev: EventInterface, args: ParseResult):
    bm = BattleMaster(ev.get_group_id())
    clan = _check_clan(bm)
    if clan['server'] == BattleMaster.SERVER_CN:
        servertag = '**国服合刀**'
        ext0 = 100
    else:
        servertag = '**日服/台服合刀**'
        ext0 = 110  # 日服补偿刀20秒起

    remain = ev.get_param().remain
    prm = re.findall("\d+[wW万]", remain)
    if len(prm) == 2:
        dmg1 = int(prm[0][:-1]) * 10000
        dmg2 = int(prm[1][:-1]) * 10000
    else:
        prm = re.findall("\d+", remain)
        if len(prm) == 2:
            dmg1 = int(prm[0])
            dmg2 = int(prm[1])
        else:
            usage = "【用法/用例】\n!补偿刀计算 50w 60w"
            await bot.kkr_send(ev, usage, at_sender=True)
            return

    r, b, hp = bm.get_challenge_progress(1, datetime.now())

    if dmg1 + dmg2 < hp:
        msg = '0x0 这两刀合起来还打不死BOSS喔'
    else:
        if dmg1 >= hp and dmg2 >= hp:
            ans1 = f'先出{dmg1:,},BOSS直接就被打死啦'
            ans2 = f'先出{dmg2:,},BOSS直接就被打死啦'
        elif dmg1 >= hp and dmg2 < hp:
            ans1 = f'先出{dmg1:,},BOSS直接就被打死啦'
            ext2 = min(math.ceil(ext0 - ((hp - dmg2) / dmg1) * 90), 90)
            ans2 = f'先出{dmg2:,}再出{dmg1:,},返还时间{ext2}秒'
        elif dmg1 < hp and dmg2 >= hp:
            ext1 = min(math.ceil(ext0 - ((hp - dmg1) / dmg2) * 90), 90)
            ans1 = f'先出{dmg1:,}再出{dmg2:,},返还时间{ext1}秒'
            ans2 = f'先出{dmg2:,},BOSS直接就被打死啦'
        else:
            ext1 = min(math.ceil(ext0 - ((hp - dmg1) / dmg2) * 90), 90)
            ans1 = f'先出{dmg1:,}再出{dmg2:,},返还时间{ext1}秒'
            ext2 = min(math.ceil(ext0 - ((hp - dmg2) / dmg1) * 90), 90)
            ans2 = f'先出{dmg2:,}再出{dmg1:,},返还时间{ext2}秒'

        not_my_fault = "计算结果仅供参考,可能与游戏内实际返还时间有偏差"
        msg = '\n'.join([servertag, ans1, ans2, not_my_fault])
    await bot.kkr_send(ev, msg, at_sender=False)
Ejemplo n.º 15
0
async def normal_map(bot, ev: EventInterface):
    try:
        number = int(ev.get_param().remain)
    except Exception as e:
        await bot.kkr_send(ev, '参数必须为数字。示例:`刷图 10`')
        return

    img = f'{NORMAL_MAP_PREFIX}-{number}.jpg'
    img = R.img(f'priconne/quick/{img}')
    if not img.exist:
        await bot.kkr_send(ev, f'{number} 图刷图攻略未找到呜呜呜 ┭┮﹏┭┮')
    else:
        await bot.kkr_send(ev, f'{number} 图刷图攻略:')
        await bot.kkr_send(ev, img)
Ejemplo n.º 16
0
async def get_last_5_weibo(bot: KokkoroBot, ev: EventInterface):
    uid = ev.get_author_id()
    if not lmt.check(uid):
        await bot.kkr_send(ev, '您查询得过于频繁,请稍等片刻', at_sender=True)
        return

    lmt.start_cd(uid)

    params = ev.get_param().remain.split(' ')
    if len(params) == 0 or params[0] == '':
        await bot.kkr_send(ev, f'使用方法:看微博 <微博别称> <1-5的数字>\n仅支持主动查看最新5条微博~')
        return
    alias = params[0]
    if len(params) == 1:
        amount = 5
    else:
        try:
            amount = int(params[1])
        except Exception as e:
            await bot.kkr_send(ev,
                               f'使用方法:看微博  {alias} <1-5的数字>\n仅支持主动查看最新5条微博~')
            return
        if amount >= 5 or amount <= 0:
            amount = 5

    if alias not in alias_dic:
        await bot.kkr_send(ev, f"未找到微博: {alias}")
        return

    service_name = alias_dic[alias]["service_name"]
    user_id = alias_dic[alias]["user_id"]

    spiders = subr_dic[service_name]["spiders"]
    for spider in spiders:
        if spider.get_user_id() == user_id:
            last_5_weibos = spider.get_last_5_weibos()
            weibos = last_5_weibos[-amount:]
            formatted_weibos = [wb_to_message(wb) for wb in weibos]
            for wb in formatted_weibos:
                await bot.kkr_send(ev, wb[0])  # send text
                imgs = wb[1]
                for img in imgs:
                    await bot.kkr_send(ev, img)  # send img
                await bot.kkr_send(ev, "===================================")
            await bot.kkr_send(ev,
                               f"以上为 {alias} 的最新 {len(formatted_weibos)} 条微博")
            return
    await bot.kkr_send(ev, f"未找到微博: {alias}")
Ejemplo n.º 17
0
async def qks_rex(bot: KokkoroBot, ev: EventInterface):
    match = ev.get_param().match
    msg = f'骑空士爪巴远点\n{qksimg}'
    res = 'http://' + match.group(0)
    async with aiohttp.TCPConnector(verify_ssl=False) as connector:
        async with aiohttp.request(
                'GET',
                url=res,
                allow_redirects=False,
                connector=connector,
        ) as resp:
            h = resp.headers
            s = resp.status
    if s == 301 or s == 302:
        if 'granbluefantasy.jp' in h['Location']:
            await bot.kkr_send(ev, msg, at_sender=True)
            await util.silence(ev, 60)
Ejemplo n.º 18
0
async def comic(bot: KokkoroBot, ev: EventInterface):
    episode = ev.get_param().remain
    if not re.fullmatch(r'\d{0,3}', episode):
        return
    episode = episode.lstrip('0')
    if not episode:
        await bot.kkr_send(ev, '请输入漫画集数 如:官漫132', at_sender=True)
        return
    index = load_index()
    if episode not in index:
        await bot.kkr_send(ev, f'未查找到第{episode}话,敬请期待官方更新', at_sender=True)
        return
    title = index[episode]['title']
    pic = R.img('priconne/comic/', get_pic_name(episode))
    msg = f'プリンセスコネクト!Re:Dive公式4コマ\n第{episode}話 {title}'
    await bot.kkr_send(ev, pic)
    await bot.kkr_send(ev, msg, at_sender=True)
Ejemplo n.º 19
0
async def lssv(bot: KokkoroBot, ev: EventInterface):
    parser = ArgumentParser()
    parser.add_argument('-a', '--all', action='store_true')
    parser.add_argument('-i', '--invisible', action='store_true')
    parser.add_argument('-g', '--group', type=int, default=0)
    args = parser.parse_args(ev.get_param().remain)

    verbose_all = args.all
    only_hidden = args.invisible
    if ev.get_author_id() in bot.config.SUPER_USER:
        gid = args.group or ev.get_group_id()
        if not gid:
            await bot.kkr_send(ev, 'Usage: -g|--group <group_id> [-a|--all]')
            return
    else:
        gid = ev.get_group_id()

    msg = svs_to_msg(Service.get_loaded_services().values(), gid, verbose_all,
                     only_hidden)
    await bot.kkr_send(ev, msg)
async def on_input_chara_name(bot: KokkoroBot, ev: EventInterface):
    gid = ev.get_group_id()
    uid = ev.get_author_id()
    if winner_judger.get_on_off_status(gid):
        s = ev.get_param().remain
        cid = chara.name2id(s)
        correct_id = winner_judger.get_result(gid)
        if cid != chara.UNKNOWN and cid == winner_judger.get_result(gid) and winner_judger.get_winner(gid) == None:
            winner_judger.record_winner(gid, uid)
            winning_counter = WinningCounter(DB_PATH)
            winning_counter._record_winning(gid, uid)
            winning_count = winning_counter._get_winning_number(gid, uid)
            nick = ev.get_author().get_nick_name()
            msg_part = f'{nick}猜对了,真厉害!TA已经猜对{winning_count}次了~'
            c = chara.fromid(correct_id)
            msg =  f'正确答案是: {c.name}'
            await bot.kkr_send(ev, msg)
            await bot.kkr_send(ev, c.icon)
            await bot.kkr_send(ev, msg_part)

            winner_judger.turn_off(gid)
Ejemplo n.º 21
0
async def africa(bot: KokkoroBot, ev: EventInterface):
    cmd = ev.get_param().plain_text
    if cmd in util.join_iterable(_africa, _image_suffix) or random.random() < 0.05:
        await bot.kkr_send(ev, R.img('非洲人.png'))
Ejemplo n.º 22
0
async def new_year_burst(bot: KokkoroBot, ev: EventInterface):
    cmd = ev.get_param().plain_text
    if cmd in util.join_iterable(_ch, _image_suffix) or random.random() < 0.02:
        await bot.kkr_send(ev, R.img('newyearburst.gif'))
        await bot.kkr_send(ev, nyb_player)
Ejemplo n.º 23
0
async def new_year_burst(bot: KokkoroBot, ev: EventInterface):
    cmd = ev.get_param().plain_text
    if cmd in util.join_iterable(_ue_sorry, _image_suffix) or random.random() < 0.02:
        await bot.kkr_send(ev, R.img('ue_sorry.jpg'))
Ejemplo n.º 24
0
async def dice(bot: KokkoroBot, ev: EventInterface):
    num, min_, max_, opr, offset = 1, 1, 100, 1, 0
    match = ev.get_param().match
    if s := match.group('num'):
        num = int(s)
Ejemplo n.º 25
0
async def kc_marriage(bot: KokkoroBot, ev: EventInterface):
    wife = ev.get_param().remain
    tip = f'与{wife}的ケッコンカッコカリ结果是:' if wife else '的ケッコンカッコカリ结果是:'
    await do_dice(bot, ev, 1, 3, 6, 1, 0, tip)
async def pcr_horse(bot, ev: EventInterface):
    remain = ev.get_param().remain
    await _horse(bot, ev, remain == '-m')
async def broadcast(bot: KokkoroBot, ev: EventInterface):
    msg = ev.get_param().remain
    await sv.broadcast(msg)
Ejemplo n.º 28
0
async def chat_queshi(bot: KokkoroBot, ev: EventInterface):
    cmd = ev.get_param().plain_text
    if cmd in ['确实.jpg'] or random.random() < 0.05:
        await bot.kkr_send(ev, R.img('确实.jpg'))