🤖第一个插件--复读机

在Plugins目录下新建一个lua文件如:reply.lua 推荐用vscode lua插件格式化代码

所有插件必须实现或包含这2个方法ReceiveWeChatMsg 和 ReceiveWeChatEvents

local log = require("log")--导入日志包
local json = require("json")--导入json包
local Api = require("coreApi")--导入API包
local http = require("http")--导入http包
local mysql = require("mysql")--导入mysql
--上述导入包 需要可以导入不需要也可以不导入 上述包都默认集成在框架里 无需安装任何第三方包
--第三方的原生lua包 是不支持的 go实现的lua虚拟机并非是原生
--每个插件必须实现该事件


--CurrentWxid 响应当前消息的机器人Wxid
--data数据结构 详细说明可以参照log.lua这个文件
--[[data.FromUserName,
        data.ToUserName,
        data.MsgType,
        data.Status,
        data.MsgId,
        data.NewMsgId,
        data.Content,
        data.MsgSource,
        data.PushContent,
        data.ActionUserName,
        data.ActionNickName
        ]]
function ReceiveWeChatMsg(CurrentWxid, data)
   if data.FromUserName == CurrentWxid then --如果是机器人自己发送的指令
        ToUserName = data.ToUserName --机器人的ToUserName 将作为回复的对象
    else
        ToUserName = data.FromUserName --他人的FromUserName 将作为回复的对象
    end
    wxid = ""
    if string.find(ToUserName, "@chatroom") then --判断是否是群聊
        wxid = data.ActionUserName --如果是群聊 获取一下发消息者的Wxid
        if wxid == "" then
            wxid = data.FromUserName
        end
    else --私聊
        wxid = data.FromUserName
    end

    if string.find(data.Content, "复读机") then --判断消息中是否包含关键字
        local keyWord = data.Content:gsub("复读机", "")
        --替换复读机为空 提取关键字
        local baseResponse =
            Api.SendMsgNew(CurrentWxid, {ToUserName = ToUserName, MsgType = 1, Content = keyWord, AtUsers = ""})
        --回复关键字
        local str = string.format("baseResponse.Ret %d", baseResponse.Ret)

        log.notice("From replay.lua Log\n%s", str) --打印一下返回值
    end
    return 1 --返回1继续处理后续插件 返回2中断后续插件处理
end
--每个插件必须实现该事件
function ReceiveWeChatEvents(CurrentWxid, data)
    return 1 --返回1继续处理后续插件 返回2中断后续插件处理
end

function Sleep(n)
    --log.notice("==========Sleep==========\n%d", n)
    local t0 = os.clock()
    while os.clock() - t0 <= n do
    end
    --log.notice("==========over Sleep==========\n%d", n)
end

Last updated