{"id":18671880,"url":"https://github.com/coloryr/minecraft_qq-c-server-","last_synced_at":"2025-04-12T01:30:52.480Z","repository":{"id":59607913,"uuid":"241374523","full_name":"Coloryr/Minecraft_QQ-C-Server-","owner":"Coloryr","description":"Minecraft服务器与QQ群互联","archived":false,"fork":false,"pushed_at":"2024-09-03T02:12:08.000Z","size":85368,"stargazers_count":32,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"Server","last_synced_at":"2025-03-25T21:14:04.722Z","etag":null,"topics":["minecraft","minecraft-plugin"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Coloryr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-18T13:55:49.000Z","updated_at":"2025-01-29T11:03:41.000Z","dependencies_parsed_at":"2024-02-19T02:24:32.766Z","dependency_job_id":"662bbaac-5e4c-43a2-9b2b-b97adcaa33b6","html_url":"https://github.com/Coloryr/Minecraft_QQ-C-Server-","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloryr%2FMinecraft_QQ-C-Server-","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloryr%2FMinecraft_QQ-C-Server-/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloryr%2FMinecraft_QQ-C-Server-/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloryr%2FMinecraft_QQ-C-Server-/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Coloryr","download_url":"https://codeload.github.com/Coloryr/Minecraft_QQ-C-Server-/tar.gz/refs/heads/Server","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248504208,"owners_count":21115134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["minecraft","minecraft-plugin"],"created_at":"2024-11-07T09:08:11.245Z","updated_at":"2025-04-12T01:30:51.154Z","avatar_url":"https://github.com/Coloryr.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minecraft服务器与QQ群聊天的插件  \r\nMinecraft_QQ 插件本体(Cmd/NewGui)\r\n\r\n机器人使用[Onebot](https://onebot.dev/)v11协议的机器人即可   \r\n例如[Lagrange](https://github.com/LagrangeDev/Lagrange.Core)  \r\n\r\n[Minebbs](https://www.minebbs.com/resources/minecraft_qq.8250)\r\n\r\n## 连接说明\r\n\r\n链接顺序不要搞错了  \r\nMinecraft_QQ-\u003eMinecraft_QQ_Cmd/NewGui-\u003eOnebot  \r\nMinecraft_QQ-\u003eMinecraft_QQ_Cmd/NewGui-\u003eOnebot  \r\nMinecraft_QQ-\u003eMinecraft_QQ_Cmd/NewGui-\u003eOnebot  \r\n\r\n## 部署教程：\r\n1. 下载\r\n\r\n[Minecraft_QQ_Cmd/NewGui](https://github.com/Coloryr/Minecraft_QQ-C-Server-/actions)  \r\n[Minecraft_QQ插件](https://github.com/Coloryr/Minecraft_QQ/actions)  \r\n任意OneBot机器人\r\n\r\n2. 启动\r\n\r\n启动Onebot机器人，并登录账户  \r\n开启正向WebSocket，绑定IP为0.0.0.0  \r\n默认使用端口为8081\r\n\r\n将`Minecraft_QQ_Cmd/Gui`放到一个文件夹，选择启动`Cmd`或者是`NewGui`  \r\n\r\nLinux下使用\r\n```\r\nchmod a+x ./Minecraft_QQ_Cmd\r\n./Minecraft_QQ_Cmd\r\n```  \r\n或者\r\n```\r\nchmod a+x ./Minecraft_QQ_NewGui\r\n./Minecraft_QQ_NewGui\r\n``` \r\n\r\n启动后进行[第一次使用配置](#第一次使用配置)  \r\n\r\n将插件放进服务器的插件文件夹\r\n重启服务器  \r\n让服务器插件连接`Minecraft_QQ_Cmd/NewGui`\r\n\r\n## 第一次使用配置\r\n\r\n`NewGui`下，添加主群即可  \r\n没有时会出现一个弹窗，输入群号后需要勾选主群  \r\n\r\n`Cmd`下，打开`Group.json`调整配置\r\n```json\r\n{\r\n    \"Groups\": {\r\n        \"123456789\": {\r\n            \"Group\": 123456789,\r\n            \"EnableCommand\": true,\r\n            \"EnableSay\": true,\r\n            \"IsMain\": true\r\n        }\r\n    }\r\n}\r\n```\r\n将`123456789`更换为你的群号\r\n\r\n或者根据提示输入群号  \r\n\r\n重启`Minecraft_QQ_Cmd/NewGui`\r\n\r\n## 插件默认指令\r\n\r\n普通用户指令：\r\n- #在线人数        查看服务器在线人数\r\n- #服务器状态      查看服务器当前状态\r\n- #绑定：[ID]      绑定游戏ID\r\n- #服务器：[内容]  向服务器内发送内容\r\n\r\n需要绑定ID后才能向服务器发送内容  \r\n若AutoSend处于开启状态，则`#服务器：`无效，且内容自动发送到服务器内\r\n\r\n管理员指令：\r\n- #禁言：[ID/@qq]      禁言某个ID的玩家发言\r\n- #解禁：[ID/@qq]      解禁某个ID的玩家发言\r\n- #查询：[@qq/qq号]    查询某个玩家的ID\r\n- #修改：[@qq] [新ID]  修改某个玩家的ID\r\n- #切换维护         \r\n- #重读文件\r\n- #昵称：[@qq] [昵称]  修改某个玩家的昵称\r\n- #禁止绑定列表\r\n- #禁言列表\r\n\r\n## 配置文件说明\r\n\r\n`MainConfig.json`主要配置文件\r\n```json\r\n{\r\n    //主要配置\r\n  \"Setting\": {\r\n    //开启自动应答\r\n    \"AskEnable\": true,\r\n    //删除聊天中的颜色代码\r\n    \"ColorEnable\": true,\r\n    //维护模式\r\n    \"FixMode\": false,\r\n    //自动发送\r\n    \"AutoSend\": true,\r\n    //替换为昵称发送到服务器内\r\n    \"SendNickServer\": true,\r\n    //替换为昵称发送到群内\r\n    \"SendNickGroup\": true,\r\n    //允许绑定ID\r\n    \"CanBind\": true,\r\n    //发送日志到主群\r\n    \"SendLog\": true,\r\n    //发送玩家在群里打的指令到服务器\r\n    \"SendCommand\": false,\r\n    //发送延迟\r\n    \"SendDelay\": 100,\r\n    //绑定提示私聊给某人\r\n    \"SendQQ\": 0,\r\n    //机器人链接地址\r\n    \"BotUrl\": \"ws://localhost:8081/\",\r\n    \"BotAuthorization\": null\r\n  },\r\n  \"Message\": {\r\n    \"FixText\": \"服务器正在维护，请等待维护结束！\",\r\n    \"UnknowText\": \"未知指令\",\r\n    \"CantBindText\": \"绑定ID已关闭\",\r\n    \"NoneBindID\": \"你没有绑定服务器ID，发送：#绑定：[ID]来绑定，如：\\r\\n绑定：Color_yr\",\r\n    \"AlreadyBindID\": \"你已经绑定ID了，请找腐竹更改\"\r\n  },\r\n  \"Check\": {\r\n    //检测头\r\n    \"Head\": \"#\",\r\n    \"PlayList\": \"在线人数\",\r\n    \"ServerCheck\": \"服务器状态\",\r\n    \"Bind\": \"绑定：\",\r\n    \"Send\": \"服务器：\"\r\n  },\r\n  \"Admin\": {\r\n    \"Mute\": \"禁言：\",\r\n    \"UnMute\": \"解禁：\",\r\n    \"CheckBind\": \"查询：\",\r\n    \"Rename\": \"修改：\",\r\n    \"Fix\": \"切换维护\",\r\n    \"Reload\": \"重读文件\",\r\n    \"Nick\": \"昵称：\",\r\n    \"GetCantBindList\": \"禁止绑定列表\",\r\n    \"GetMuteList\": \"禁言列表\",\r\n    \"NoInput\": false\r\n  },\r\n  \"Socket\": {\r\n    //开启端口，默认就好\r\n    \"Port\": 25555,\r\n    \"Check\": true\r\n  },\r\n  \"Database\": {\r\n    \"Url\": \"SslMode=none;Server=127.0.0.1;Port=3306;User ID=root;Password=123456;Database=minecraft;Charset=utf8;\",\r\n    \"Enable\": false\r\n  }\r\n}\r\n```\r\n检测头必须写，所有指令都需要检测头在最前面才能执行\r\n\r\n`Ask.json`自动应答配置文件\r\n```json\r\n{\r\n  \"AskList\": {\r\n    \"服务器菜单\": \"...........\"\r\n  }\r\n}\r\n```\r\n可以自行添加，注意json格式就行\r\n```json\r\n{\r\n  \"AskList\": {\r\n    \"a\": \"xxx\",\r\n   ......\r\n    \"b\": \"xxx\"\r\n  }\r\n}\r\n```\r\n\r\n`Command.json`自定义命令配置文件\r\n```json\r\n{\r\n  \"CommandList\": {\r\n    \"插件帮助\": {\r\n      \"Command\": \"qq help\",\r\n      \"PlayerUse\": false,\r\n      \"PlayerSend\": false,\r\n      \"Servers\": []\r\n    },\r\n    \"查钱\": {\r\n      \"Command\": \"money {arg:name}\",\r\n      \"PlayerUse\": true,\r\n      \"PlayerSend\": false,\r\n      \"Servers\": []\r\n    },\r\n    \"禁言\": {\r\n      \"Command\": \"mute {arg:x}\",\r\n      \"PlayerUse\": false,\r\n      \"PlayerSend\": false,\r\n      \"Servers\": []\r\n    },\r\n    \"传送\": {\r\n      \"Command\": \"tpa {arg:at}\",\r\n      \"PlayerUse\": true,\r\n      \"PlayerSend\": false,\r\n      \"Servers\": []\r\n    },\r\n    \"给权限\": {\r\n      \"Command\": \"lp user {arg:at} permission set {arg:next} true\",\r\n      \"PlayerUse\": false,\r\n      \"PlayerSend\": false,\r\n      \"Servers\": []\r\n    },\r\n    \"说话\": {\r\n      \"Command\": \"say {arg:x}\",\r\n      \"PlayerUse\": false,\r\n      \"PlayerSend\": false,\r\n      \"Servers\": []\r\n    }\r\n  }\r\n}\r\n ```\r\n 命令可以自己添加，注意json格式\r\n - `Command`：发送到服务器的格式\r\n - `PlayerUse`：该命令是否非管理员可用\r\n - `PlayerSend`：命令执行是否是玩家\r\n - `Servers`：发送给的服务器，服务器名字记得加上`\"`标起来，空或者null则表示发送给所有服务器\r\n\r\n参数说明\r\n- `{arg:at}`：将会被替换为@QQ之后的游戏ID\r\n- `{arg:name}`：将会被替换为自己的游戏ID\r\n- `{arg:qq}`：将会被替换为自己的QQ\r\n- `{arg:atqq}`：将会被替换为@QQ之后的QQ\r\n- `{arg:next}`：将会被替换为后面的参数\r\n- `{arg:x}`：将剩下的参数直接填进去\r\n例如\r\n```json\r\n{\r\n    \"禁言\": {\r\n        \"Command\": \"mute {arg:next}\",\r\n        \"PlayerUse\": false,\r\n        \"PlayerSend\": false,\r\n        \"Servers\": []\r\n    }\r\n}\r\n```\r\n在群里输入 `#禁言 Color_yr` \r\n那么发送到服务器的指令为 `mute Color_yr`  \r\n\r\n```json\r\n{\r\n    \"给权限\": {\r\n        \"Command\": \"lp user {arg:at} permission set {arg:next} true\",\r\n        \"PlayerUse\": false,\r\n        \"PlayerSend\": false,\r\n        \"Servers\": []\r\n    }\r\n}\r\n```\r\n在群里输入 `#给权限 @qq admin.*`(@一个群成员)  \r\n那么发送到服务器的指令为 `lp user 该群员绑定的ID permission set admin.* true`  \r\n参数注意空格，不注意会错乱\r\n\r\n```json\r\n{\r\n    \"说话\": {\r\n        \"Command\": \"say {arg:x}\",\r\n        \"PlayerUse\": false,\r\n        \"PlayerSend\": false,\r\n        \"Servers\": []\r\n    }\r\n}\r\n```\r\n在群里输入 `#说话 test test`  \r\n那么发送到服务器的指令为 `say test test`  \r\n\r\n`Player.json`玩家绑定储存\r\n```json\r\n{\r\n  //禁止绑定Id列表\r\n  \"NotBindList\": [\r\n    \"Color_yr\",\r\n    \"id\"\r\n  ],\r\n  //禁言列表\r\n  \"MuteList\": [\r\n    \"playerid\"\r\n  ],\r\n  \"PlayerList\": {\r\n    \"402067010\": {\r\n      \"Name\": \"测试\",\r\n      \"Nick\": \"昵称\",\r\n      \"QQ\": 402067010,\r\n      //是否为管理员\r\n      \"IsAdmin\": true\r\n    }\r\n  }\r\n}\r\n```\r\n自行添加注意格式\r\n\r\n## 端口说明\r\n\r\nMinecraft_QQ_Cmd/NewGui的默认端口为25555  \r\n如果没有必要，请不要随便改这两个端口\r\n\r\n## 不在一台机器上部署\r\n\r\n如果你有公网IP，直接在防火墙开放端口就行了  \r\n然后Minecraft_QQ的IP设置填你机器的公网IP\r\n如果你没有公网IP，那就去用端口映射，能映射出去就行了  \r\n\r\n## 自己写Minecraft_QQ\r\n1. 首先确定你的环境是.net8\r\n2. 在你的项目里面导入`Minecraft_QQ_Core.dll`  \r\n如果你导入的是`ref`文件夹里面的dll，请另外安装[Newtonsoft.Json](https://www.newtonsoft.com/json)\r\n\r\n3. 核心启动  \r\n首先设置回调，然后使用`Start`方法\r\n```C#\r\nprivate static void Message(string message)\r\n{\r\n    Console.WriteLine(message);\r\n}\r\n\r\nprivate static void ConfigInit() \r\n{\r\n    if (Environment.UserInteractive)\r\n    {\r\n        Console.WriteLine(\"进行初始配置\");\r\n        while (true)\r\n        {\r\n            Console.Write(\"请输入主群号：\");\r\n            string a = Console.ReadLine();\r\n            if (long.TryParse(a, out var group))\r\n            {\r\n                group = Math.Abs(group);\r\n                Minecraft_QQ.AddGroup(new()\r\n                {\r\n                    Group = group,\r\n                    EnableCommand = true,\r\n                    EnableSay = true,\r\n                    IsMain = true\r\n                });\r\n                break;\r\n            }\r\n            Console.WriteLine(\"非法输入\");\r\n        }\r\n    }\r\n}\r\n\r\nIMinecraft_QQ.ConfigInitCall = ConfigInit;\r\nIMinecraft_QQ.ShowMessageCall = Message;\r\nIMinecraft_QQ.LogCall = Message;\r\n\r\n//启动\r\nawait Minecraft_QQ.Start();\r\n```\r\n\r\nMinecraft_QQ核心方法API\r\n```C#\r\n/// \u003csummary\u003e\r\n/// QQ号取玩家\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"qq\"\u003eqq号\u003c/param\u003e\r\n/// \u003creturns\u003e玩家信息\u003c/returns\u003e\r\npublic PlayerObj GetPlayer(long qq);\r\n/// \u003csummary\u003e\r\n/// ID取玩家\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"id\"\u003e玩家ID\u003c/param\u003e\r\n/// \u003creturns\u003e玩家信息\u003c/returns\u003e\r\npublic PlayerObj GetPlayer(string id);\r\n/// \u003csummary\u003e\r\n/// 设置玩家昵称\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"qq\"\u003eqq号\u003c/param\u003e\r\n/// \u003cparam name=\"nick\"\u003e昵称\u003c/param\u003e\r\npublic void SetNick(long qq, string nick);\r\n/// \u003csummary\u003e\r\n/// 设置玩家ID，如果存在直接修改，不存在创建\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"qq\"\u003eqq号\u003c/param\u003e\r\n/// \u003cparam name=\"name\"\u003e玩家ID\u003c/param\u003e\r\npublic void SetPlayerName(long qq, string name);\r\n/// \u003csummary\u003e\r\n/// 直接设置一个玩家数据\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"player\"\u003e玩家\u003c/param\u003e\r\npublic static void SetPlayer(PlayerObj player);\r\n/// \u003csummary\u003e\r\n/// 禁言玩家\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"qq\"\u003eQQ号\u003c/param\u003e\r\npublic void MutePlayer(long qq);\r\n/// \u003csummary\u003e\r\n/// 禁言玩家\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"name\"\u003e名字\u003c/param\u003e\r\npublic void MutePlayer(string name);\r\n/// \u003csummary\u003e\r\n/// 添加禁止绑定\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"name\"\u003e名字\u003c/param\u003e\r\npublic static void AddNotBind(string name);\r\n /// \u003csummary\u003e\r\n /// 删除禁止绑定\r\n /// \u003c/summary\u003e\r\n /// \u003cparam name=\"name\"\u003e名字\u003c/param\u003e\r\n public static void RemoveNotBind(string name);\r\n/// \u003csummary\u003e\r\n/// 解除禁言\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"qq\"\u003e玩家QQ号\u003c/param\u003e\r\npublic void UnmutePlayer(long qq);\r\n/// \u003csummary\u003e\r\n/// 解除禁言\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"name\"\u003e玩家ID\u003c/param\u003e\r\npublic void UnmutePlayer(string name);\r\n/// \u003csummary\u003e\r\n/// 设置维护模式状态\r\n/// \u003c/summary\u003e\r\n/// \u003cparam name=\"open\"\u003e状态\u003c/param\u003e\r\npublic void FixModeChange(bool open);\r\n/// \u003csummary\u003e\r\n/// 重载配置\r\n/// \u003c/summary\u003e\r\npublic bool Reload();\r\n/// \u003csummary\u003e\r\n/// 启动\r\n/// \u003c/summary\u003e\r\npublic void Start();\r\n/// \u003csummary\u003e\r\n/// 停止\r\n/// \u003c/summary\u003e\r\npublic void Stop();\r\n/// \u003csummary\u003e\r\n/// 添加自动应答\r\n/// \u003c/summary\u003e\r\npublic static void AddAsk(string check, string res);\r\n```\r\n\r\n如果你要通过Minecraft_QQ发送消息，可以这样写\r\n```C#\r\nRobotCore.SendGroupMessage(123456, [MsgText.Build(\"text\")]);\r\n```\r\n或者发送私聊消息\r\n```C#\r\nRobotCore.SendPrivateMessage(123456, [MsgText.Build(\"text\")]);\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoloryr%2Fminecraft_qq-c-server-","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoloryr%2Fminecraft_qq-c-server-","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoloryr%2Fminecraft_qq-c-server-/lists"}