Skip to content

fossabot/Hyperai.Units

 
 

Repository files navigation

Hyperai.Units

为 Hyperai Application 提供 Units 服务, 将处理对象细化到消息.

Contributors Forks Stargazers FOSSA Status

Logo

ProjHyperai

QQ/TG 机器人开发在这入门
本项目的文档 »

加入群聊 · 报告问题 · 提供建议

注册服务 | Registering Units service

安装包

dotnet add package Hyperai.Units

在一个已有的 IHyperaiApplicationBuilder 对象中添加服务

var builder = MagicalBox.Take<IHyperaiApplicationBuilder>();
// => new HyperaiApplicationBuilder()

builder.Services.AddUnits();

var app = builder.Build();

var service = app.Provider.GetRequiredService<IUnitService>();
service.SearchForUnits();

app.Run();

编写一个 Unit | Make a class a Unit

在任意地方创建一个类, 名字任意

public class Asshole
{
    [Receive(MessageEventType.Group)]
    [Extract("!fuck {who}")]
    [CheckTicket("ability.to.fuck")]
    public async Task Fuck(Member sender, Group group, long who)
    {
        FuckRecord record = null;
	    using(sender.For<FuckRecord>(() => new FuckRecord(0), out record))
	    {
		    await group.SendAsync($"[hyper.at({sender.Identity})] fucked [hyper.at({who})] the {++record.Count}th time.").MakeMessageChain());
	    }
    }
}

解析参数 | Parsing Arguments

如你所见 ExtractAttribute 可以在消息中解析出特定文本, UnitService 会把该文本转换为所需要的值类型或 MessageChain.

权限标注 | That's not my job, sir. It's yours.

你看到了 CheckTicketAttribute, 但是这并不是本项目提供的功能. 但你可以使用 FilterByAttribute 来实现它.

方法注入 | Method Injection

是的, 所需的参数用形参来注入.

形参中可以有 UnitBase.Context 中的成员(使用类型来匹配), 也可以是 ExtractAttribute 中大括号内的参数(使用名字来识别).

引用 | Reference

License

FOSSA Status

About

Hyperai.Units itself

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%