基于NoneBot的图片消息


aiocqhttp库中自带了个MessageSegment的类,很多可以直接调用,具体可以点开MessageSegment的类中,这里是把本地文件读取变成图片发送消息返回给CQ机器人。

直接上源代码:

from nonebot import on_command, CommandSession from nonebot import on_natural_language, NLPSession, IntentCommand from jieba import posseg import requests import time import urllib from lxml import etree from aiocqhttp import MessageSegment import requests from config import IMAGE_LOCAL class GetPic: def __init__(self): self.session = requests.session() def get_Pic(self): res = self.session.get("http://api.mtyqx.cn/api/random.php", verify=False) # 保存图片
        with open(IMAGE_LOCAL.format('8531'), "wb") as f: f.write(res.content) return True @on_command('setu', aliases=('富婆','色图', '老婆', '老婆图', '萝莉')) async def setu(session: CommandSession): Pic = GetPic() if Pic.get_Pic(): seq = MessageSegment.image("{}.png".format('8531')) await session.send(seq) @on_natural_language(keywords={'富婆','色图', '老婆', '老婆图', '萝莉'},only_to_me=False) async def _(session: NLPSession): # 去掉消息首尾的空白符
    stripped_msg = session.msg_text.strip() # 对消息进行分词和词性标注
    words = posseg.lcut(stripped_msg) pic = None # 遍历 posseg.lcut 返回的列表
    for word in words: # 每个元素是一个 pair 对象,包含 word 和 flag 两个属性,分别表示词和词性
        if word.flag == 'st': pic = word.word break

    # 返回意图命令,前两个参数必填,分别表示置信度和意图命令名
    return IntentCommand(90.0, 'setu', current_arg=pic)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM