async def command(chat_attrs: ChatAttribute, args: List): if not args: return False if len(args) != 2: return False dst_driver_name = args[0] dst_chat_id = int(args[1]) dst_driver = driver_lookup_table.get(dst_driver_name) if not dst_driver: return assert isinstance(dst_driver, QQ.QQDriver) context = dict() if chat_attrs.chat_type == ChatType.UNSPECIFIED: return context['message_type'] = f"{chat_attrs.chat_type}" context['message'] = list() if chat_attrs.chat_type == ChatType.PRIVATE: context['user_id'] = dst_chat_id else: context[f'{chat_attrs.chat_type}_id'] = abs(dst_chat_id) for i in range(256): context['message'].append(MessageSegment.text(f'Emoji {i}: ')) context['message'].append(MessageSegment.face(i)) context['message'].append(MessageSegment.text('\n')) await dst_driver.bot.send(context, context['message'])
async def setu(session: CommandSession): print('执行setu' + session.current_arg_text) res = '' code = 0 if session.current_arg_text == '': src = get_random_src(option.get_option()['sql_dir']) res = '恭喜你获得老婆一只!' print(src) await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True) else: s = session.current_arg_text if isnumber(s): num = int(session.current_arg_text) if num >= 10: await session.send('做人不能太贪心哦!', at_sender=True) num = 1 for i in range(num): src = get_random_src(option.get_option()['sql_dir']) await session.send(MessageSegment.image(src), at_sender=True) res = '共计获得老婆' + str(num) + '只!' await session.send(res, at_sender=True) else: try: src = get_pic_from_sql(session.current_arg_text) res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!' except Exception: src = get_random_src(option.get_option()['sql_dir']) res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个' await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True)
async def _(session: CommandSession): # 若用户对机器人说“天气”,则此变量为 `['']` # 若用户对机器人说“天气 香港”,则此变量为 `['香港']` # 若用户对机器人说“天气 香港 详细”,则此变量为 `['香港', '详细']` args = session.current_arg_text.strip().split(' ', 1) if not args[0]: city = await session.aget(key='city', prompt='请问是什么城市呢?', at_sender=True) else: city = args[0] func = get_current_weather_short result = await func(city) if result['msg'] == 'success': data = result['data'] cityname = data['cityname'] temp = data['temp'] weather = data['weather'] pm25 = data['pm25'] time = data['time'] msg='天气数据最后更新时间:'+time+'\n'+'城市:'+cityname+'\n'+\ '天气:'+weather+' '+temp+'℃\n'+'PM2.5:'+pm25+'μg/m3\n' await session.send(MessageSegment.text(msg)) else: await session.send(MessageSegment.text(result['msg']))
async def argue(event: Event): if event.group_id in ENABLED_GROUPS: msg = Message(event.message).extract_plain_text() if random() <= 0.001: reply: Message = MessageSegment.at( event.user_id) + MessageSegment.text("{}个头".format(msg[0])) await bot.send(event, reply) logger.info("怼人了!({} -> 群号 {})".format(str(reply), event.group_id))
async def wikipedia(session: CommandSession): words = session.get('words', prompt='你想查询什么词条呢?') data = await get_wikipedia(words) if len(data) == 1: res = MessageSegment.text(data[0]) await session.send(res) elif len(data) == 2: res = MessageSegment.text(data[0]) img = MessageSegment.image(data[1]) await session.send(res + img)
async def _chick_in(): uid = session.ctx['sender']['user_id'] if check_in_interval_judgment(uid): chick_in(uid) image = await get_image(uid) card = session.ctx.get('sender').get('_card') if card: text = chick_in_text(uid, card) else: nickname = session.ctx['sender']['nickname'] text = chick_in_text(uid, nickname) image = ImageProcessing(image, text, 256, 'send') await image.save() bot = session.bot boo = await bot.can_send_image() boo = boo['yes'] if not boo: await session.send(text) else: with open('./chick_image_cache/send.png', 'rb') as f: base = base64.b64encode(f.read()) img = MessageSegment.image(f'base64://{base.decode()}') await session.send(img) else: await session.send('您今天已经签到过了')
async def _(session: CommandSession): hour: str = session.get('hour', prompt='您想几点运行,多个时间用逗号隔开') minute: str = session.get('minute', prompt='您想几分运行,多个时间用逗号隔开') cmd: str = session.get('cmd', prompt='请输入要运行的指令') cmd = cmd.strip('命令') #Hoshino消息只处理一次,加上命令前缀防止触发命令 session.event.raw_message = cmd session.event.message = Message(MessageSegment.text(cmd)) try: global _running_jobs job = add_cron_job(task, hour=hour, minute=minute, args=[session.event]) _running_jobs.append(job) global _tasks #对event先处理,剔除由RexTrigger添加的match对象 if 'match' in session.event: del session.event['match'] _tasks['data'].append( dict({ "id": job.id, "event": session.event, "hour": hour, "minute": minute })) save_config(_tasks, _task_path) await session.send('设置成功') except ValueError as ex: sv.logger.error(f'添加定时任务时出现异常{ex}') await session.send('参数错误,请重新设置') except: print_exc()
async def twelve(): logger.info("十二点了!") msg: Message = MessageSegment.image( "f29b5c32ad65cdbd38f097e6b5e314d4.image") for group in ENABLED_GROUPS: await bot.send_group_msg(group_id=group, message=msg) logger.info("报时已发送至群号 {}".format(group))
async def help_(bot: Bot, event: Event, state: dict): if int(event.get_user_id()) != event.self_id: path_ = os.getcwd() path_ = path_ + '\help.png' mypath = 'file:///' + path_ print(mypath) await bot.send(event=event, message=MessageSegment.image(mypath))
async def pixivmale(bot, event): # 提取pixiv男性向的图片 data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_male') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) sendimg = MessageSegment.image(img[0]) await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") await bot.send(event, sendimg) # 该api不可用 # async def pixivr18(bot, event): # 提取pixivR18日榜榜的图片 # if event.group_id in config.whilelst: #群组白名单 # data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_r18') # id = random.randrange(0, len(data.entries)) # link = data.entries[id].link # title = data.entries[id].title # summary = data.entries[id].summary # pattern = re.compile(r'src="(.*?)"', re.I) # img = re.findall(pattern,summary) # sendimg = MessageSegment.image(img[0]) # await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") # await bot.send(event, sendimg) # else: # await bot.send(event, "だめですよ~")
async def pixiv_analysis(session: CommandSession): # await session.send('功能修复中.') bot = get_bot() reg = session.current_arg_text # seq = MessageSegment.image(os.getcwd()+'\\pixdata\\0.jpg') # await bot.send_group_msg(group_id=debug_group, message=seq) # try: # await bot.send_group_msg(group_id=debug_group, # message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]') # message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]') # except CQHttpError as e: # print(e) if not reg: await session.send('未输入搜索关键词.') await bot.send_group_msg(group_id=debug_group, message='p站搜索中,tag:' + reg) await session.send("当前参数: 查找%d张图片,搜索页数%d,最低收藏数%d,正在搜索..." % (num, page, bookmark)) datas = searchByTag(reg, num, page, bookmark) # print(ill) if not datas: await session.send('未搜索到图片或网络错误.') else: await session.send('搜索到%d组图片.' % len(datas)) for data in datas: await session.send(data[0]) for i in range(1, len(data)): seq = MessageSegment.image(os.getcwd() + '\\pixdata\\' + data[i]) try: await session.send(seq) except CQHttpError as e: print(e) sleep(2)
async def garbageSort(session: CommandSession): args = session.current_arg_text.strip().split(' ', 1) if not args[0]: keyword = await session.aget(key='city', prompt='请问是什么物品呢?', at_sender=True) else: keyword = args[0] result = await get_garbageSort(keyword) await session.send(MessageSegment.text(result))
async def cmd50_(bot: Bot, event: Event): if int(event.get_user_id()) != event.self_id: path_ = os.getcwd() path_ = path_ + '\yuyinbao\你个大叔,怎么那么坏,老是要看这看那的.mp3' mypath = 'file:///' + path_ print(mypath) sst = MessageSegment.record(file=str(mypath)) await bot.send(event=event, message=Message(sst))
async def cmd27_(bot: Bot, event: Event): if int(event.get_user_id()) != event.self_id: path_ = os.getcwd() path_ = path_ + '\yuyinbao\就算搞基我也只做攻 就是把你压在身下那种。.mp3' mypath = 'file:///' + path_ print(mypath) sst = MessageSegment.record(file=str(mypath)) await bot.send(event=event, message=Message(sst))
async def cmd6_(bot: Bot, event: Event): if int(event.get_user_id()) != event.self_id: path_ = os.getcwd() path_ = path_ + '\yuyinbao\。哎呀好的啦 小哥哥不要生气了嘛.mp3' mypath = 'file:///' + path_ print(mypath) sst = MessageSegment.record(file=str(mypath)) await bot.send(event=event, message=Message(sst))
async def WZ_(bot: Bot, event: Event, state: dict): if int(event.get_user_id()) != event.self_id: await bot.send(event=event, message=MessageSegment(type_='video', data=({ 'file': str(await get_DSP()) })))
async def _(): bot = nonebot.get_bot() record = MessageSegment.record("ATOS/AOTS.mp3") try: await bot.send_group_msg(group_id=请在此输入群号, message=record) await bot.send_group_msg(group_id=请在此输入群号, message=f'G114514次列车即将进站,请工作人员做好接车准备') except CQHttpError: pass
async def handle_YY(bot: Bot, event: Event, state: dict): yuying = state["yuying"] huan = str(get_yuying(yuying)) huan = huan.replace('\n', '') await bot.send(event=event, message=MessageSegment(type_='record', data=({ 'file': huan })))
async def setu(session: CommandSession): print('执行setu' + session.current_arg_text) res = '' code = 0 if session.current_arg_text == '': src = get_pic_from_local() res = '恭喜你获得老婆一只!' await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True) else: s = session.current_arg_text if isnumber(s): num = int(session.current_arg_text) if num >= 10: await session.send('做人不能太贪心哦!', at_sender=True) num = 1 for i in range(num): src = get_pic_from_local() await session.send(MessageSegment.image(src), at_sender=True) res = '共计获得老婆' + str(num) + '只!' await session.send(res, at_sender=True) else: try: code, src, quota = get_pic(r18=0, keyword=session.current_arg_text) if code == 0: res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!' else: src = get_pic_from_local() if code == -1: print('api内部错误') elif code == 401: print('由于不规范的操作而被拒绝调用') elif code == 403: print('找不到符合关键字的色图') elif code == 429: print('达到调用额度限制') await session.send('剩余服务次数:' + str(quota)) except Exception: src = get_pic_from_local() res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个' await session.send(MessageSegment.image(src), at_sender=True) await session.send(res, at_sender=True)
async def _send(self, to_chat: int, chat_type: ChatType, message: UnifiedMessage): """ :return: """ self.logger.debug('begin processing message') context = dict() if chat_type == ChatType.UNSPECIFIED: self.logger.warning(f'Sending to undefined group or chat {to_chat}') return context['message_type'] = f'{chat_type}' context['message'] = list() if message.image: image_name = os.path.basename(message.image) context['message'].append(MessageSegment.image(image_name)) if (chat_type == ChatType.PRIVATE and self.config.NameforPrivateChat) or \ (chat_type in (ChatType.GROUP, ChatType.DISCUSS) and self.config.NameforGroupChat): # name logic if message.chat_attrs.name: context['message'].append(MessageSegment.text(message.chat_attrs.name)) if message.chat_attrs.reply_to: context['message'].append(MessageSegment.text(' (➡️️' + message.chat_attrs.reply_to.name + ')')) if message.chat_attrs.forward_from: context['message'].append(MessageSegment.text(' (️️↩️' + message.chat_attrs.forward_from.name + ')')) if message.chat_attrs.name: context['message'].append(MessageSegment.text(': ')) # at user if message.send_action.user_id: context['message'].append(MessageSegment.at(message.send_action.user_id)) context['message'].append(MessageSegment.text(' ')) context['message'].append(MessageSegment.text(message.text)) if chat_type == ChatType.PRIVATE: context['user_id'] = to_chat else: context[f'{chat_type}_id'] = to_chat self.logger.debug('finished processing message, ready to send') result = await self.bot.send(context, context['message']) if message.chat_attrs: set_egress_message_id(src_platform=message.chat_attrs.platform, src_chat_id=message.chat_attrs.chat_id, src_chat_type=message.chat_attrs.chat_type, src_message_id=message.chat_attrs.message_id, dst_platform=self.name, dst_chat_id=to_chat, dst_chat_type=chat_type, dst_message_id=result.get('message_id'), user_id=self.config.Account) self.logger.debug('finished sending') return result.get('message_id')
async def _(): bot = nonebot.get_bot() i = str(random.randint(1, 130)) record = MessageSegment.record("melody/" + i + ".mp3") try: await bot.send_group_msg(group_id=请在此输入群号, message=f'G114514次列车即将发车') await bot.send_group_msg(group_id=请在此输入群号, message=record) await bot.send_group_msg(group_id=请在此输入群号, message=f'车门即将关闭,请注意安全!') except CQHttpError: pass
async def pixivday(bot, event): # 提取pixiv日榜的图片 data = feedparser.parse(config.rsshub + 'pixiv/ranking/day') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) sendimg = MessageSegment.image(img[0]) await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") await bot.send(event, sendimg)
def get_downloaded_image_path(response: dict, path: str): url = response['url'] image_response = requests.get(url, stream=True) image_response.raise_for_status() path = f'{path}/{response["filename"]}' if not os.path.exists(path): with open(path, 'wb') as file: file.write(image_response.content) resp = str(MessageSegment.image(f'file:///{path}')) return resp
async def epicfree(bot, event): data = feedparser.parse(config.rsshub + 'epicgames/freegames') for i in range(0, len(data.entries)): title = data.entries[i].title summary = data.entries[i].summary link = data.entries[i].link pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) sendimg = MessageSegment.image(img[0]) await bot.send(event, sendimg + "\n" + "游戏名:" + title + "\n" + "链接:" + link)
async def zaobao(): (bot, ) = nonebot.get_bots().values() text = await get_zaobao() text.replace('\n', '') for id in group_id_list: await bot.send_msg(message_type="group", group_id=int(id), message='早上好,兄弟萌☀\n━━━━━━━━\n60s读懂世界\n' + MessageSegment.image(text)) await bot.send_msg(message_type="group", group_id=int(id), message=str(get_today()))
async def setu(bot, event): if event.group_id in config.whilelst: #群组白名单 id = random.randrange(12, 131) url = config.url + "%d" % id res = requests.get(url=url) pic = json.loads(res.content)['data'] await bot.send(event, "" + pic['title'] + "\n" + "url:" + pic['url']) img = MessageSegment.image("https://pixiv.cat/%d" % pic['pid'] + ".jpg") await bot.send(event, img) else: await bot.send(event, "您配吗?")
async def pixivmonth(bot, event): # 提取pixiv月榜的图片 data = feedparser.parse(config.rsshub + 'pixiv/ranking/month') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~") # sendimg = MessageSegment.image(img[0]) sendimg = MessageSegment.image( 'https://cdn.jsdelivr.net/gh/tydaytygx/NA/NA_icon_report_1080_.png') await bot.send(event, sendimg)
async def kaw(bot, event): # 提取Konachan Anime Wallpapers日榜的图片 if event.group_id in config.whilelst: #群组白名单 data = feedparser.parse(config.rsshub + 'konachan/post/popular_recent/1d') id = random.randrange(0, len(data.entries)) link = data.entries[id].link title = data.entries[id].title summary = data.entries[id].summary pattern = re.compile(r'src="(.*?)"', re.I) img = re.findall(pattern, summary) await bot.send(event, "tag:" + title + "\n" + link) sendimg = MessageSegment.image(img[0]) await bot.send(event, sendimg) else: await bot.send(event, "您配吗?")
async def tawawa(session: CommandSession): qq_number = '10000' # todo it should be catch from session await session.send('功能暂时不可用') try: msg, ok, no = action.start(qq_number) log.write([msg, ok, no]) if ok is False: await session.send(msg) else: prev_msg = '现在发送第' + str(no) + '话' await session.send(prev_msg) b64_str = get_b64_content(msg) seg = MessageSegment.image(b64_str) await session.send(seg) except Exception as e: log.write(e) await session.send('发生了些小小的错误呢')
async def ph_(bot: Bot, event: Event, state: dict): if event.get_user_id != event.self_id: print(str(event.message)) ch = str(event.message) i = 0 ss = [' '] * 2 for it in ch.split(' '): if i == 2: break ss[i] = it i = i + 1 ph_generator(str(ss[0]), str(ss[1])) path_ = os.getcwd() path_ = path_ + '\ph.png' mypath = 'file:///' + path_ print(mypath) sst = MessageSegment.image(file=str(mypath)) #(file = str(mypath)) await bot.send(event=event, message=Message(sst))