Masuda.Net 6.0.9-preview1.0

This is a prerelease version of Masuda.Net.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Masuda.Net --version 6.0.9-preview1.0
                    
NuGet\Install-Package Masuda.Net -Version 6.0.9-preview1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Masuda.Net" Version="6.0.9-preview1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Masuda.Net" Version="6.0.9-preview1.0" />
                    
Directory.Packages.props
<PackageReference Include="Masuda.Net" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Masuda.Net --version 6.0.9-preview1.0
                    
#r "nuget: Masuda.Net, 6.0.9-preview1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Masuda.Net@6.0.9-preview1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Masuda.Net&version=6.0.9-preview1.0&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Masuda.Net&version=6.0.9-preview1.0&prerelease
                    
Install as a Cake Tool

QQ频道机器人官方接口(C#)

实现了一个简易的C#的接口封装,由于目前消息权限卡的很死,需要配置语料才能发送,请注意。

  • 个人开发者需要用ReplyMessageAsync以回复的方式发送消息,回复的消息目前必须与语料配置完全一致才能发出去(tx你在干什么啊tx)。
  • 上条作废,在沙箱环境中目前可以任意回复。(niiiice)
  • 如果不行请在官方管理平台 [https://bot.q.qq.com/] 完成语料配置再测试
  • 日程官方似乎还未实装功能
  • appid是int类型,appkey,token是string类型,目前appkey不是必须要的值可以随意填入。其他两个按自己的bot信息填入。
  • 如果遇到权限问题请尝试踢出机器人再重新加入
  • 未来接口可能还会有比较大的改动,请注意。
  • 有疑问欢迎提出issue或联系QQ1078995020

注意,使用沙箱模式时有可能会遇到 websocket link not exist 的报错,此时切换成正式模式大概率能恢复正常

说明

目前本项目依赖于.NET6/.NET5,未来可能考虑加入之前版本的包。
本项目力图提供极简风格的api,以实现尽可能少的代码完成bot配置,可参考以下例子。
由于目前很多接口由于过于严格的审核机制导致测试起来很麻烦,目前关于消息方面仅提供简单的文字回复接口,未来测试完毕后会更新。

小功能

  • api中所用的时间戳,可以通过以下方法获取
    DateTime.Now.ToMillisecond();
  • uint类型的Color可以用类似0x1AC456这样赋值,本SDK中也提供了HexColor的属性值来通过字符串设定
  • 收到了AT消息后可以通过以下函数获取去除at消息后的内容
    MessageHelper.GetPureMessage(msg.Content);
  • x.0.3及版之后可以直接传入msg进行at
    await bot.ReplyMessageAsync(msg, new AtMessage(msg));

如何安装

  1. VS2022/19通过Nuget包管理器搜索Masuda.Net即可安装。vs19推荐使用5.x.x版本, vs22推荐使用6.x.x版本
  2. 在项目命令行中输入(需要.net环境)
# .net5
dotnet add package Masuda.Net --version 5.0.7
# .net6
dotnet add package Masuda.Net --version 6.0.7

例子

以下为回复一条消息的简单实现

using Masuda.Net;
using Masuda.Net.Models;
using Masuda.Net.HelpMessage;

MasudaBot MasudaBot
    = new(appid, appkey, token);

// 现以加入默认配置 私域 简洁初始化
MasudaBot MasudaBot2
    = new(appid, appkey, token, BotType.Private);



// 配置回复事件模板
MasudaBot.AtMessageAction += async (bot, msg, type) => 
{ 
    // 回复文本
    await bot.ReplyMessageAsync(msg, "muda");
    // 组合消息
    await bot.ReplyMessageAsync(msg, new AtMessage(msg), new PlainMessage("muda"));
    
    // 多个参数自动拼接
    await bot.ReplyMessageAsync(msg, new AtMessage(msg), new PlainMessage("muda"), new AtMessage(msg));
    // 图片和文字目前不能一起传,若以后支持可向上面那样拼接, 另外一个消息只能带一张图,传入多个ImageMessage会覆盖
    await bot.ReplyMessageAsync(msg, new ImageMessage("imgurl"));
    //
};

// 阻塞程序,可以用其他任何方法
while (true)
{
    await Task.Delay(10000);
}

另有其他几种启动模式

/// x.0.7之后开始支持这样的启动方法
BotSetting BotSetting = new BotSetting
{
    AppId = 0,
    AppKey = "",
    Token = "",
    Intents = new[] { Intent.AT_MESSAGES },
    SandBox = false,
    Log = true,
    // 为-1则默认不分片
    ShardId = -1
};
MasudaBot masudaBot = new MasudaBot(BotSetting);
// 现以加入默认配置 公域
MasudaBot MasudaBot3
    = new(appid, appkey, token, BotType.Public);
// 沙箱环境
MasudaBot MasudaBot1
    = new(appid, appkey, token, sandBox: true);
// 带命令行log输出
MasudaBot MasudaBot
    = new(appid, appkey, token, log: true);
    
// 指定权限
// 默认会请求Intent.AT_MESSAGES, Intent.GUILDS, Intent.GUILD_MEMBERS, Intent.GUILD_MESSAGE_REACTIONS四个权限, 如已开启了私域,可再请求Intent.NORMAL_MESSAGES权限
MasudaBot MasudaBot
    = new(appid, appkey, token, intents: new[] { Intent.GUILDS, Intent.AT_MESSAGES});

// 缺省参数也可以混用
MasudaBot MasudaBot
    = new(appid, appkey, token, log: true, intents: new[] { Intent.GUILDS, Intent.AT_MESSAGES, Intent.NORMAL_MESSAGES});


// 普通消息事件注册
MasudaBot.MessageAction += async (bot, msg, type) => 
{ 
    // 回复文本
    await bot.ReplyMessageAsync(msg, "muda");
    // 组合消息
    await bot.ReplyMessageAsync(msg, new PlainMessage("muda"), new AtMessage(msg.Author.Id));
    //
};

Intent表

public enum Intent
{
    GUILDS = 1 << 0,
    GUILD_MEMBERS = 1 << 1,
    NORMAL_MESSAGES = 1 << 9,
    GUILD_MESSAGE_REACTIONS = 1 << 10,
    DIRECT_MESSAGE = 1 << 12,
    FORUM_EVENT = 1 << 28,
    AUDIO_ACTION = 1 << 29,
    AT_MESSAGES = 1 << 30,
}

Q&A

    1. 我想发一张图片应该要怎么写?
// url为图片网络地址 目前暂时不能发本地图片 
await bot.ReplyMessageAsync(msg, new ImageMessage(url));

当然,也支持这样

// url为图片网络地址 目前暂时不能发本地图片 
await bot.ReplyMessageAsync(msg, new AtMessage(msg), new ImageMessage(url));
    1. 我想获取非at消息应该怎么样申请权限?
// 权限列表可以按需添加 
MasudaBot MasudaBot
    = new(appid, appkey, token, intents: new[] { Intent.GUILDS, Intent.AT_MESSAGES, Intent.NORMAL_MESSAGES});
    1. 我想@人并发消息应该怎么写?
await bot.ReplyMessageAsync(msg, new AtMessage(msg), new PlainMessage("muda"));
    1. 我想发送QQ表情应该怎么做
    1. emoji可以直接用字符发送例如"♥", QQ表情官方还不支持发送。
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Masuda.Net:

Repository Stars
CnGal/CnGalWebSite
CnGal是一个非营利性的,立志于收集整理国内制作组创作的中文Galgame/AVG的介绍、攻略、评测、感想等内容的资料性质的网站。
Version Downloads Last Updated
6.0.13 1,277 10/20/2022
6.0.12 515 7/1/2022
6.0.11 521 6/29/2022
6.0.10 431 12/28/2021
6.0.9 377 12/24/2021
6.0.9-preview1.0 229 12/22/2021
6.0.8 382 12/20/2021
6.0.7 428 12/19/2021
6.0.6 402 12/18/2021
6.0.5 367 12/17/2021
6.0.4 391 12/16/2021
6.0.2 394 12/16/2021
6.0.0 420 12/15/2021
5.0.10 410 12/28/2021
5.0.9 377 12/24/2021
5.0.9-preview1.0 230 12/22/2021
5.0.8 369 12/20/2021
5.0.7 405 12/19/2021
5.0.6 397 12/18/2021
5.0.5 396 12/17/2021
5.0.4 396 12/16/2021
5.0.2 404 12/16/2021
5.0.0 413 12/15/2021
4.7.3.10 408 12/28/2021
4.7.3 400 12/20/2021
1.2.1 375 12/14/2021
1.2.0 405 12/14/2021
1.1.1 370 12/14/2021
1.1.0 543 12/13/2021
1.0.2 404 12/12/2021
1.0.1 378 12/12/2021
1.0.0 409 12/12/2021