收起左侧

autMan奥特曼机器人-对接XYBotV2框架微信机器人教程

1
回复
309
查看
[ 复制链接 ]

12

主题

5

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2025-5-9 16:49:31 显示全部楼层 阅读模式

以飞牛OS举例

一、安装docker版本的xy框架

1、文件管理里面新建一个文件夹
2025-05-07T07:47:56.png
2、打开docker新建一个项目,将下面代码粘贴进去,运行即可。代码需要修改部分:/vol4/1000/docker,改为第一步你新建的文件夹路径,飞牛里面右键该文件夹,点属性,复制原始路径就是【不理解就看上一张图片】

version: '3.8'
services:
  xybotv2:
    image: xmoxmo/xybotv2
    container_name: XYBotV2
    ports:
      - "9000:9000"
    restart: always
    logging:
      driver: json-file
      options:
        max-size: 5m
    volumes:
      - /vol4/1000/docker/XYBotV2:/app  

2025-05-07T06:47:17.png
3、等待构建完成
2025-05-07T06:49:17.png
4、修改插件
两种方案,推荐方案一简单。
方案一:
找到plugins文件夹下的all_in_one_config.toml文件,打开修改其中的base_url地址为:

http://autMan地址:端口/xy/receive

2025-05-07T06:54:55.png
还有就是bncr插件里有条语句要修改一下

  @on_image_message
    async def handle_image(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了图片消息")
        # return await self.request(message)

修改为

  @on_image_message
    async def handle_image(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了图片消息")
        return await self.request(message)

切记,改完要重启XYBotV2容器一次才生效!

方案二:
1、在plugins文件夹下的all_in_one_config.toml文件,最下面增加几行

[Aut]
enable = true
base_url = "http://autMan地址:端口/xy/receive"

2、plugins文件夹下放一个插件文件aut_plugin.py,这个插件来自小寒寒,转自奥特曼论坛

from loguru import logger

from WechatAPI import WechatAPIClient
from utils.decorators import *
from utils.plugin_base import PluginBase
import aiohttp
import tomllib

class AutPlugin(PluginBase):
    description = "Aut"
    author = "原作者是小寒寒"
    version = "1.0.0"

    def __init__(self):
        super().__init__()
        with open("plugins/all_in_one_config.toml", "rb") as f:
            config = tomllib.load(f)

        plugin_config = config["Aut"]

        self.enable = plugin_config["enable"]

        self.base_url = plugin_config["base_url"]

    async def request(self, message):
        try:
            logger.debug(message)
            async with aiohttp.request("POST", url=self.base_url, json=message) as req:
                return await req.json()
        except Exception as e:
            logger.error(f"推送Aut失败: {str(e)}")
            return

    @on_text_message
    async def handle_text(self, bot: WechatAPIClient, message: dict):
        return await self.request(message)
      
    @on_at_message
    async def handle_at(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了被@消息")
        return await self.request(message)
      
    @on_xml_message
    async def handle_xml(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了xml消息")
        return await self.request(message)
       
    @on_friend_request
    async def handle_friend(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了好友申请")
        return await self.request(message)

    @on_voice_message
    async def handle_voice(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了语音消息")
        # return await self.request(message)

    @on_image_message
    async def handle_image(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了图片消息")
        # return await self.request(message)

    @on_video_message
    async def handle_video(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了视频消息")
        # return await self.request(message)

    @on_file_message
    async def handle_file(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了文件消息")
        # return await self.request(message)

    @on_quote_message
    async def handle_quote(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了引用消息")
        return await self.request(message)

    @on_sys_message
    async def handle_sys(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了**")
        return await self.request(message)

    @on_pat_message
    async def handle_pat(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了拍一拍消息")
        return await self.request(message)

    @on_emoji_message
    async def handle_emoji(self, bot: WechatAPIClient, message: dict):
        logger.info("收到了表情消息")
        return await self.request(message)

    # @schedule('interval', seconds=5)
    # async def periodic_task(self, bot: WechatAPIClient):
    #     logger.info("我每5秒执行一次")

    # @schedule('cron', hour=8, minute=30, second=30)
    # async def daily_task(self, bot: WechatAPIClient):
    #     logger.info("我每天早上8点30分30秒执行")

    # @schedule('date', run_date='2025-01-29 00:00:00')
    # async def new_year_task(self, bot: WechatAPIClient):
    #     logger.info("我在2025年1月29日执行")

切记,改完要重启XYBotV2容器一次才生效!

二、登录XYbot

在xy的容器日志里面获取二维码链接,访问这个链接有个二维码,机器人账号扫码登录即可
2025-05-07T07:22:16.png
2025-05-07T07:24:17.png

三、autman后台对接插件设置

下载autman安装对接插件,设置配参即可,后台web上适配器栏目内启用xy对接并重启autMan
2025-05-07T07:03:42.png
2025-05-07T06:57:39.png

四、测试

给机器人发 time 看是否有反馈

五、其他

1、消息转发(文本)
前缀改成 xygroup:带上群号就是:xygroup:66666666@chatroom
2025-05-08T01:27:23.png
2、消息转发(图片)
如果图片无法转发,最下面替换添加:

{"https":"http"}

2025-05-08T01:29:12.png

收藏
送赞
分享

1

主题

11

回帖

0

牛值

江湖小虾

2025-5-14 23:06:30 显示全部楼层

很容易封号吧。 这种

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则