<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 查看您可以访问的不同内容