samp吧 关注:15,497贴子:400,845
  • 9回复贴,共1

【开源】手把手教你在SA-MP中编写属于你的QQ机器人

取消只看楼主收藏回复

不知道多少人还在这个圈子里面坚持,或是凭着对技术的热爱撑到了现在。两年前我突发奇想,是否可以在把QQ群聊天的消息转到SAMP服务器的聊天中?接着这个想法,pawn-mirai插件诞生了,可是这个插件并没有得到好的支持,技术不成熟,我便放弃了这个想法。
我个人认为SAMP适合作为一个"学习的跳板",就是每当我学到新的东西的时候,我就会找某个地方去实践我的知识,而SAMP便适合我
所以这次,我感兴趣创造了名为 samp-onebot 的插件,一个基于TwoBotFramework在C++中编写的samp插件,允许开发者在pawn中使用OneBot接口
话不多说,一楼开始介绍



IP属地:广东1楼2024-09-14 00:51回复

    github: 81vm3/samp-onebot
    首先,这是什么?
    这是一个samp的C++插件,允许你使用pawn语言编写onebot的业务逻辑,从而实现在samp服务器内与群通信。一些简单的应用是:服务器与群消息互通,群执行命令服务器内响应


    IP属地:广东2楼2024-09-14 00:55
    回复
      本质上来说,本插件为pawn开发者提供了onebot的SDK,一个onebot机器人的消息传递机制如下:
      OneBot SDK -> OneBot实现 -> 社交App平台 (如QQ,vx)
      在TwoBotFramework C++ SDK的基础上,本插件包装了TwoBot作为pawn语言下的OneBot 的的SDK,允许你简单地在pawn中编写自己的机器人代码


      IP属地:广东3楼2024-09-14 00:58
      回复
        简单的示例代码 (Pawn):


        IP属地:广东4楼2024-09-14 01:00
        回复
          如何对接上机器人呢?光启用本插件无法正常对接的,请牢记本插件只是一个SDK,开发者还需要寻找Onebot实现,(也就是“消息平台”,能够真正与上流服务器通信)
          有众多消息平台可选,比如mirai,lagrange,shamrock,这里我们只讨论lagrange,shamrock的教程在项目主页有。而mirai呢,由于tx积极更新签名算法,这里就不考虑它了


          IP属地:广东5楼2024-09-14 01:04
          回复
            Lagrange 是一个基于纯
            C#的NTQQ协议实现,支持Onebot
            首先从 GitHub 上面下载 nightly release
            运行后提示
            No exist config file, create it now...
            Please Edit the appsettings.json to set configs and press any key to continue
            首次运行的时候生成了 appsettings.json 文件这个时候按Ctrl+C 退出
            我们需要编辑lagrange的配置文 appsettings.json

            其中Implementations是消息平台的通信方式,我们需要同时配置两种
            ReverseWebSocket - Lagrange作为客户端通过反向WebSocket去连接SAMP-OneBot,此时SAMP-OneBot是作为服务器的角色
            HTTP - Lagrange作为API的服务端,比如当我们需要发送群消息的时候,就需要调用API。此时SAMP-OneBot是作为客户端的角色


            IP属地:广东7楼2024-09-14 01:08
            回复
              然后在你的samp目录下面修改 samp-onebot.json
              注意 samp-onebot.json 中的端口和地址应与lagrange中一致
              { "host": "127.0.0.1", "ws_port": 8080, "api_port": 8081, "thread_count": 6, "token": ""}


              IP属地:广东8楼2024-09-14 01:09
              回复
                至于搭建消息平台,我还是不再这里赘述了,大家可以看github的教程https://github.com/81Vm3/samp-onebot/blob/main/tutorials/lagrange.md 或者去b站搜我的视频,接下来我就详细介绍插件


                IP属地:广东9楼2024-09-14 01:11
                回复
                  在插件的include文件中你可以找到插件可用的native函数。有一点需要注意的是,获取某种消息的时候,结果是以json裸指针的形式返回给pawn的,你也得用OB_GetJsonString去获取结果


                  IP属地:广东10楼2024-09-14 01:14
                  回复
                    下面是一个在pawn里面实现的简单的群机器人命令示例


                    IP属地:广东11楼2024-09-14 01:15
                    回复