GithubHelp home page GithubHelp logo

yoroion / mirai.net Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sinoahpx/mirai.net

0.0 0.0 0.0 736 KB

Mirai.Net是基于mirai-api-http实现的轻量级mirai社区sdk。

License: GNU Affero General Public License v3.0

C# 100.00%

mirai.net's Introduction

Mirai.Net 2.4.5

Mirai.Net 是基于 mirai-api-http 实现的 C# 版轻量级 mirai 社区 SDK。

此项目遵循 AGPL-3.0 协议开源。

本项目新建立的 QQ 群: 752379554(原来的已被停封)欢迎加入群聊探讨 甚至水群聊天

项目文档:Mirai.Net Documents

如果你觉得这是个很酷的项目的话,不妨考虑给它点一个 Star。

如果你还觉得挺酷但还不够好的话,也欢迎提交 Pull Request 和 Issue。

速览

  • 基于 .NET Standard 2.0 开发,支持跨平台。
  • 适配最新的 mirai-api-http 插件。
  • 实现了 mirai-api-httpHttp AdapterWebsocket Adapter
    • Http Adapter 用来进行发送操作。
    • Websocket Adapter 用来进行接收操作。
  • 基于 Rx.NET 的推送系统。
  • 有一堆好用的脚手架和拓展方法。
  • 提供了简单的模块化和命令系统实现。
  • 源代码结构
    • Mirai.Net,主项目
    • Mirai.Net.Test,控制台测试项目
    • Mirai.Net.UnitTest,单元测试项目(现在没啥用了)
实现的接口列表

斜体的标注的接口是不稳定的

删除线标注的接口是未实现的

  • 账号信息
    • 获取好友列表
    • 获取群列表
    • 获取群成员列表
    • 获取 Bot 资料
    • 获取好友资料
    • 获取群成员资料
    • 获取陌生人资料
  • 消息发送和撤回
    • 发送好友消息
    • 发送群消息
    • 发送临时会话消息
    • 发送头像戳一戳消息
    • 撤回消息
    • 根据消息id获取消息链
  • 文件操作
    • 查看文件列表
    • 获取文件信息
    • 创建文件夹
    • 删除文件
    • 移动文件
    • 重命名文件
  • 多媒体内容上传
    • 图片文件上传
    • 语音文件上传
    • 群文件上传
  • 账号管理
    • 删除好友
  • 群管理
    • 禁言群成员
    • 解除群成员禁言
    • 移除群成员
    • 退出群聊
    • 全体禁言
    • 解除全体禁言
    • 设置群精华消息
    • 获取群设置
    • 修改群设置
    • 获取群员设置
    • 修改群员设置
  • 事件处理
    • 添加好友申请
    • 用户入群申请
    • Bot 被邀请入群申请
支持的消息类型
  • Quote - 回复消息
  • At - @消息
  • AtAll - @全体成员
  • Face - QQ 表情
  • Plain - 纯文本
  • Image - 图片
  • FlashImage - 闪照
  • Voice - 语音
  • Xml - XML 消息
  • Json - JSON 消息
  • App - App 消息
  • Poke - 戳一戳
  • Dice - 不知道是啥玩意
  • MusicShare - 音乐分享
  • ForwardMessage - 转发消息
  • File - 文件
  • MarketFace - 商城表情
  • MiraiCode - Mirai码

快速上手

(以下仅为一些简单示例,如果需要更详细的说明,请移步文档。有时候文档跟不上版本请进群提问

安装

  • 使用 Nuget 安装(推荐)
    • Nuget 包管理器: Install-Package Mirai.Net
    • .NET CLI: dotnet add package Mirai.Net
    • 或者在 IDE 的可视化界面搜索Mirai.Net安装最新版。
  • 自己克隆这个仓库的默认分支,然后自己编译,然后自己添加 dll 引用。

创建和启动 Bot

名称空间引用
using System;
using System.Linq;
using System.Reactive.Linq;
using System.Threading;
using System.Threading.Tasks;
using Mirai.Net.Data.Messages;
using Mirai.Net.Data.Messages.Receivers;
using Mirai.Net.Sessions;
using var bot = new MiraiBot
{
    Address = "localhost:8080",
    QQ = "xx",
    VerifyKey = "xx"
};

(因为MiraiBot类实现了IDisposable接口,所以可以使用using关键字)

AddressVerifyKey来自mirai-api-http的配置文件,QQ就是Mirai Console已登录的机器人的 QQ 号。

创建完MiraiBot实例之后,就可以启动了:

await bot.LaunchAsync();

监听事件和消息

MiraiBot类暴露两个属性: EventReceivedMessageReceived,订阅它们就可以监听事件和消息。

下面的例子就是过滤出接收到的好友请求事件事件,然后把它从EventBase转换成具体的NewFriendRequestedEvent,最后才是订阅器。

(消息的订阅器也是同样的)

bot.EventReceived
    .OfType<NewFriendRequestedEvent>()
    .Subscribe(x =>
    {
        //do things
    });

Hello, World

Mirai.Net通过一系列的xxManager(这些管理器都是静态类。)来进行主动操作,其中,消息相关的管理器为MessageManager

发送消息

这里以发送群消息作为演示,实际上还可以发送好友消息,临时消息和戳一戳消息。

发送消息的方法有两个参数: 发送到哪里和发送什么。所以第一个参数就是发消息的群号,第二个参数就是要发送的消息链(或者字符串)。

await MessageManager.SendGroupMessageAsync("xx", "Hello, World");

或者:

await MessageManager.SendGroupMessageAsync("xx", new MessageChainBuilder().Plain("Hello, ").At("xx").Build());

贡献

此项目欢迎任何人的 Pull RequestIssue 也欢迎 Star 和 Fork。

如果你认为文档不够好,也欢迎对 文档仓库 提交 Pull RequestIssue

致谢

mirai.net's People

Contributors

cyanray avatar cyl18 avatar easyworld avatar ksharperd avatar kyocius avatar lightquanta avatar sinoahpx avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.