不和.Net如何列出组中的所有命令


<Group("math")>
Public Class cmd_math
Inherits ModuleBase
#Region "Add"
<Command("add")>
Public Async Function cmdAdd(ByVal num1 As Integer, <Remainder> ByVal num2 As Integer) As Task
Dim sum = num1 + num2
Dim user = Context.User
Dim channel = Context.Channel
Await channel.SendMessageAsync($"{user.Mention} the sum of the two specified numbers are {sum}")
End Function
#End Region
#Region "Subtract"
<Command("sub")>
Public Async Function cmdSub(ByVal num1 As Integer, <Remainder> ByVal num2 As Integer) As Task
Dim sum = num1 - num2
Dim user = Context.User
Dim channel = Context.Channel
Await channel.SendMessageAsync($"{user.Mention} the sum of the two specified numbers are {sum}")
End Function
#End Region
#Region "Multiply"
<Command("multi")>
Public Async Function cmdMulti(ByVal num1 As Integer, <Remainder> ByVal num2 As Integer) As Task
Dim sum = num1 * num2
Dim user = Context.User
Dim channel = Context.Channel
Await channel.SendMessageAsync($"{user.Mention} the sum of the two specified numbers are {sum}")
End Function
#End Region
#Region "Divide"
<Command("divide")>
Public Async Function cmdDivide(ByVal num1 As Integer, <Remainder> ByVal num2 As Integer) As Task
Dim sum = num1 / num2
Dim user = Context.User
Dim channel = Context.Channel
Await channel.SendMessageAsync($"{user.Mention} the sum of the two specified numbers are {sum}")
End Function
#End Region
End Class

我该如何创建一个名为"list"的命令,然后自动发送带有命令列表的嵌入,而不必编写嵌入并自动填充?如果不能在嵌入中使用常规图像完成,也可以。我很确定它会使用for循环,但在那之后,我不知道如何处理它。

在程序的某个地方,您可能会有类似的东西

Dim collection As New ServiceCollection()
collection.AddSingleton(DiscordSocketClient())

或者您将客户端添加到IserviceProvider
您的ServiceProvider用于依赖项注入。要注入命令服务,您需要将其添加到ServiceCollection

collection.AddSingleton(New CommandService())

要将其注入命令模块,只需在构造函数中添加一个参数

Public Class YourCommandModule
Inherits ModuleBase(Of SocketCommandContext)
Private ReadOnly Property Commands As CommandService
Public Sub New(commands As CommandService)
Me.Commands = commands
End Sub

然后,您可以在该类中创建帮助命令,该类现在可以访问CommandService

<Command("Help")>
Public Async Function Help() As Task
'Create your embed builder 
'...
'You can access all module classes using `CommandService.Modules`
For Each moduleData As ModuleInfo In Commands.Modules
Dim cmds As List(CommandInfo) = moduleData.Commands 'this gives a list of all commands in this class 
'you can now do something with that list of commands 
'add each one to a embed field for example
Next
End Function

您可以通过ModuleInfo和CommandInfo 查看您可以访问的不同内容

相关内容

  • 没有找到相关文章

最新更新