Minecraft服务器与QQ群聊天的插件
Minecraft_QQ 插件本体(Cmd/Gui)
连接说明
链接顺序不要搞错了
Minecraft_QQ->Minecraft_QQ_Cmd/Gui->ColorMirai
Minecraft_QQ->Minecraft_QQ_Cmd/Gui->ColorMirai
Minecraft_QQ->Minecraft_QQ_Cmd/Gui->ColorMirai
请不要拿Minecraft_QQ直连ColorMirai,连不上的
部署教程:
- 下载
- 安装
- 启动
将
ColorMirai
放到一个文件夹,根据步骤启动将
Minecraft_QQ_Cmd/Gui
放到一个文件夹,选择启动Cmd
或者是Gui
Linux下使用dotnet Minecraft_QQ_Cmd.dll
启动后进行第一次使用配置
连接ColorMirai
将插件放进服务器的插件文件夹 重启服务器
连接Minecraft_QQ_Cmd/Gui
第一次使用配置
- 群设置
Gui
下,添加主群即可
有弹窗一样可以点主界面
右键
就能修改/添加
Cmd
下,打开Group.json
调整配置{ "Groups": { "123456789": { "Group": "123456789", "EnableCommand": true, "EnableSay": true, "IsMain": true } } }
- 运行QQ号设置
Gui修改
插件配置
下的机器人账户
Cmd修改MainConfig.json
下的RobotSetting.QQ
填写运行的QQ号即可
- 保存重启
Cmd
的配置文件修改后需要重启Gui
点右上角保存即可
配置文件
Ask.json
自动应答
配置文件{ "AskList": { "服务器菜单": "服务器查询菜单:\r\n【#绑定: ID】可以绑定你的游戏ID。\r\n【#在线人数】可以查询服务器在线人数。\r\n【#服务器状态】可以查询服务器是否在运行。\r\n【#服务器: 内容】可以向服务器里发送消息。(使用前请确保已经绑定了ID,)" } }可以自行添加,注意json格式就行
{ "AskList": { "a": "xxx", ...... "b": "xxx" } }
Command.json
自定义命令
配置文件{ "CommandList": { "插件帮助": { "Command": "qq help", "PlayerUse": false, "PlayerSend": false, "Servers": [] }, "查钱": { "Command": "money {arg:name}", "PlayerUse": true, "PlayerSend": false, "Servers": [] }, "禁言": { "Command": "mute {arg1}", "PlayerUse": false, "PlayerSend": false, "Servers": [] }, "传送": { "Command": "tpa {arg:at}", "PlayerUse": true, "PlayerSend": false, "Servers": [] }, "给权限": { "Command": "lp user {arg:at} permission set {arg1} true", "PlayerUse": false, "PlayerSend": false, "Servers": [] } } }命令可以自己添加,注意json格式
Command
:发送到服务器的格式PlayerUse
:该命令是否非管理员可用PlayerSend
:命令执行是否是玩家Servers
:发送给的服务器,服务器名字记得加上"
标起来参数说明
{arg:at}
:将会被替换为@QQ之后的游戏ID{arg:name}
:将会被替换为自己的游戏ID{arg:qq}
:将会被替换为自己的QQ{arg:atqq}
:将会被替换为@QQ之后的QQ{arg[1\2\3\...]}
:将会被替换为后面的参数{argx}
:将剩下的参数直接填进去 例如"禁言": { "Command": "mute {arg1}", "PlayerUse": false, "PlayerSend": false, "Servers": [] }在群里输入
#禁言 Color_yr
那么发送到服务器的指令为mute Color_yr
"给权限": { "Command": "lp user {arg:at} permission set {arg1} true", "PlayerUse": false, "PlayerSend": false, "Servers": [] }在群里输入
#给权限 @恋恋 admin.*
(@一个群成员)
那么发送到服务器的指令为lp user 该群员绑定的ID permission set admin.* true
参数注意空格,不注意会错乱"说话": { "Command": "say {argx}", "PlayerUse": false, "PlayerSend": false, "Servers": [] }在群里输入
#说话 test test
那么发送到服务器的指令为say test test
Player.json
玩家绑定储存{ "NotBindList": [ "Color_yr", "id" ], "MuteList": [ "playerid" ], "PlayerList": { "402067010": { "Name": "测试", "Nick": "昵称", "QQ": 402067010, "IsAdmin": true } } }自行添加注意格式
端口说明
ColorMirai的默认端口为23333
Minecraft_QQ_Cmd/Gui的默认端口为25555
如果没有必要,请不要随便改这两个端口
不在一台机器上部署
如果你有公网IP,直接在防火墙开放端口就行了
然后Minecraft_QQ的IP设置填你机器的公网IP
如果你没有公网IP,那就去用端口映射,能映射出去就行了
然后Minecraft_QQ_Cmd/Gui的绑定IP改为0.0.0.0
自己写Minecraft_QQ
-
首先确定你的环境是.net6
-
在你的项目里面导入
Minecraft_QQ_Core.dll
如果你导入的是ref
文件夹里面的dll,请另外安装Newtonsoft.Json -
核心启动
首先设置回调,然后使用Start
方法
private static void Message(string message)
{
Console.WriteLine(message);
}
IMinecraft_QQ IMinecraft_QQ = new();
IMinecraft_QQ.ShowMessageCall = new IMinecraft_QQ.ShowMessage(Message);
IMinecraft_QQ.LogCall = new IMinecraft_QQ.Log(Message);
IMinecraft_QQ.Start();
获取核心
Minecraft_QQ Minecraft_QQ = IMinecraft_QQ.Main;
获取核心后就获取一些东西
/// <summary>
/// 配置文件路径
/// </summary>
public string Path { get; init; } = AppContext.BaseDirectory + "Minecraft_QQ/";
/// <summary>
/// Mysql启用
/// </summary>
public bool MysqlOK = false;
/// <summary>
/// 主群群号
/// </summary>
public long GroupSetMain { get; set; } = 0;
/// <summary>
/// 主配置文件
/// </summary>
public MainConfig MainConfig { get; set; }
/// <summary>
/// 玩家储存配置
/// </summary>
public PlayerConfig PlayerConfig { get; set; }
/// <summary>
/// 群储存配置
/// </summary>
public GroupConfig GroupConfig { get; set; }
/// <summary>
/// 自动应答储存
/// </summary>
public AskConfig AskConfig { get; set; }
/// <summary>
/// 自定义指令
/// </summary>
public CommandConfig CommandConfig { get; set; }
/// <summary>
/// Socket服务器
/// </summary>
public readonly MySocketServer Server;
/// <summary>
/// Mysql
/// </summary>
public readonly MyMysql Mysql;
/// <summary>
/// 机器人
/// </summary>
public readonly RobotSocket Robot;
/// <summary>
/// 发送群消息
/// </summary>
public readonly SendGroup SendGroup;
Minecraft_QQ核心方法API
/// <summary>
/// QQ号取玩家
/// </summary>
/// <param name="qq">qq号</param>
/// <returns>玩家信息</returns>
public PlayerObj GetPlayer(long qq);
/// <summary>
/// ID取玩家
/// </summary>
/// <param name="id">玩家ID</param>
/// <returns>玩家信息</returns>
public PlayerObj GetPlayer(string id);
/// <summary>
/// 设置玩家昵称
/// </summary>
/// <param name="qq">qq号</param>
/// <param name="nick">昵称</param>
public void SetNick(long qq, string nick);
/// <summary>
/// 设置玩家ID,如果存在直接修改,不存在创建
/// </summary>
/// <param name="qq">qq号</param>
/// <param name="name">玩家ID</param>
public void SetPlayerName(long qq, string name);
/// <summary>
/// 禁言玩家
/// </summary>
/// <param name="qq">QQ号</param>
public void MutePlayer(long qq);
/// <summary>
/// 禁言玩家
/// </summary>
/// <param name="name">名字</param>
public void MutePlayer(string name);
/// <summary>
/// 解除禁言
/// </summary>
/// <param name="qq">玩家QQ号</param>
public void UnmutePlayer(long qq);
/// <summary>
/// 解除禁言
/// </summary>
/// <param name="name">玩家ID</param>
public void UnmutePlayer(string name);
/// <summary>
/// 设置维护模式状态
/// </summary>
/// <param name="open">状态</param>
public void FixModeChange(bool open);
/// <summary>
/// 重载配置
/// </summary>
public bool Reload();
/// <summary>
/// 插件启动
/// </summary>
public void Start();
/// <summary>
/// 插件停止
/// </summary>
public void Stop();
具体内容看代码
如果你要通过Minecraft_QQ发送群消息,可以这样写
Minecraft_QQ.SendGroup.AddSend(new()
{
Group = 123456,
Message = "text"
});
又或者
Minecraft_QQ.Robot.SendGroupMessage(123456, "text");
推荐使用上面的方法,可以控制发送群消息的数量。