Package net.mamoe.mirai.console.command

Types

Link copied to clipboard
abstract class AbstractCommand @JvmOverloads constructor(    val owner: CommandOwner,     val primaryName: String,     val secondaryNames: Array<out String>,     val description: String = "<no description available>",     parentPermission: Permission = owner.parentPermission) : Command

Command 的基础实现

Link copied to clipboard
sealed class AbstractCommandSender : CommandSender, CoroutineScope

所有 CommandSender 都必须继承自此对象.

Link copied to clipboard
abstract class AbstractPluginCustomCommandSender(val owner: Plugin) : AbstractCommandSender, PluginCustomCommandSender

所有 PluginCustomCommandSender 的父类

Link copied to clipboard
abstract class AbstractPluginCustomCommandSenderJ(val owner: Plugin) : AbstractPluginCustomCommandSender
Link copied to clipboard
sealed class AbstractUserCommandSender : AbstractCommandSender, UserCommandSender
Link copied to clipboard
interface BuiltInCommand : Command
Link copied to clipboard
object BuiltInCommands

内建指令列表

Link copied to clipboard
interface Command

指令

Link copied to clipboard
interface CommandContext

指令执行环境

Link copied to clipboard
sealed class CommandExecuteResult

指令的执行返回

Link copied to clipboard
class CommandExecutionException(    val sender: CommandSender,     val command: Command,     val name: String,     cause: Throwable) : RuntimeException

CommandManager.executeCommand 中抛出异常时包装的异常.

Link copied to clipboard
interface CommandManager

指令管理器

Link copied to clipboard
interface CommandOwner : PermissionIdNamespace

指令的所有者. JvmPlugin 是一个 CommandOwner.

Link copied to clipboard
class CommandPermissionDeniedException(val commandSender: CommandSender, val command: Command) : RuntimeException

CommandManager.executeCommand 中, CommandSender 未拥有 Command.permission 所要求的权限时抛出的异常.

Link copied to clipboard
interface CommandSender : CoroutineScope, Permittee

指令发送者.

Link copied to clipboard
interface CommandSenderOnMessage<T : MessageEvent> : CommandSender

代表一个真实 用户 主动私聊机器人或在群内发送消息而执行指令

Link copied to clipboard
abstract class CompositeCommand(    owner: CommandOwner,     primaryName: String,     secondaryNames: String,     description: String = "no description available",     parentPermission: Permission = owner.parentPermission,     overrideContext: CommandArgumentContext = EmptyCommandArgumentContext) : AbstractCommand, Command, CommandArgumentContextAware

复合指令. 指令注册时候会通过反射构造指令解析器.

Link copied to clipboard
object ConsoleCommandOwner : CommandOwner

代表控制台所有者. 所有的 mirai-console 内建的指令都属于 ConsoleCommandOwner.

Link copied to clipboard

控制台指令执行者. 代表由控制台执行指令

Link copied to clipboard
Link copied to clipboard
open class FriendCommandSender : AbstractUserCommandSender, CoroutineScope

代表一个 好友 执行指令, 但不一定是通过私聊方式, 也有可能是由插件在代码直接执行 (CommandManager.executeCommand)

Link copied to clipboard

代表一个真实的 好友 主动在私聊消息执行指令

Link copied to clipboard
interface GroupAwareCommandSender : UserCommandSender

知道 Group 环境的 UserCommandSender

Link copied to clipboard
open class GroupTempCommandSender : TempCommandSender, CoroutineScope

代表一个 群员 通过临时会话执行指令, 但不一定是通过私聊方式, 也有可能是由插件在代码直接执行 (CommandManager.executeCommand)

Link copied to clipboard

代表一个 群员 主动在临时会话发送消息执行指令

Link copied to clipboard
open class IllegalCommandArgumentException @JvmOverloads constructor(message: String, cause: Throwable? = null) : IllegalArgumentException

在处理参数时遇到的 正常 错误. 如参数不符合规范, 参数值越界等.

Link copied to clipboard
open class MemberCommandSender : AbstractUserCommandSender, GroupAwareCommandSender, CoroutineScope

代表一个 群员 执行指令, 但不一定是通过群内发消息方式, 也有可能是由插件在代码直接执行 (CommandManager.executeCommand)

Link copied to clipboard

代表一个真实的 群员 主动在群内发送消息执行指令.

Link copied to clipboard
open class OtherClientCommandSender : AbstractCommandSender, CoroutineScope

代表一个 其他客户端 通过私聊执行指令, 但不一定是通过私聊方式, 也有可能是由插件在代码直接执行 (CommandManager.executeCommand)

Link copied to clipboard

代表一个 其他客户端 主动在私聊发送消息执行指令

Link copied to clipboard

代表一个 其他客户端 主动在群内、好友聊天等发送消息执行指令

Link copied to clipboard
interface PluginCustomCommandSender : CommandSender, SystemCommandSender

一个来自插件自行实现的 CommandSender.

Link copied to clipboard
abstract class RawCommand(    val owner: CommandOwner,     val primaryName: String,     val secondaryNames: String,     val usage: String = "<no usages given>",     val description: String = "<no descriptions given>",     parentPermission: Permission = owner.parentPermission,     val prefixOptional: Boolean = false) : Command

无参数解析, 只会接收原消息链的指令. Java 查看 JRawCommand.

Link copied to clipboard
abstract class SimpleCommand(    owner: CommandOwner,     primaryName: String,     secondaryNames: String,     description: String = "no description available",     parentPermission: Permission = owner.parentPermission,     overrideContext: CommandArgumentContext = EmptyCommandArgumentContext) : AbstractCommand, Command, CommandArgumentContextAware

简单的, 支持参数自动解析的指令.

Link copied to clipboard
open class StrangerCommandSender : AbstractUserCommandSender, CoroutineScope

代表一个 陌生人 通过私聊执行指令, 但不一定是通过私聊方式, 也有可能是由插件在代码直接执行 (CommandManager.executeCommand)

Link copied to clipboard

代表一个 陌生人 主动在私聊发送消息执行指令

Link copied to clipboard
interface SystemCommandSender : CommandSender

一个来自内部系统的命令执行者.

Link copied to clipboard
class UnmatchedCommandSignature(val signature: CommandSignature, val failureReason: FailureReason)
Link copied to clipboard
interface UserCommandSender : CommandSender

代表一个用户执行指令

Functions

Link copied to clipboard
inline suspend fun Command.execute(    sender: CommandSender,     vararg arguments: Message = emptyArray(),     checkPermission: Boolean = true): CommandExecuteResult
inline suspend fun Command.execute(    sender: CommandSender,     arguments: String = "",     checkPermission: Boolean = true): CommandExecuteResult

执行一个确切的指令

Link copied to clipboard
inline suspend fun CommandSender.executeCommand(message: String, checkPermission: Boolean = true): CommandExecuteResult

解析并执行一个指令

Link copied to clipboard
inline fun <R> CommandSender.fold(    ifIsSystem: SystemCommandSender.() -> R,     ifIsUser: UserCommandSender.() -> R,     otherwise: CommandSender.() -> R = { error("CommandSender ${this::class.qualifiedName} is not supported") }): R

折叠 CommandSender 的可能性.

Link copied to clipboard
inline fun <R> UserCommandSender.foldContext(inGroup: MemberCommandSender.() -> R, inPrivate: UserCommandSender.() -> R): R

折叠 UserCommandSender 的两种可能性, 即在群内发送或在私聊环境发送.

Link copied to clipboard
fun CommandSender.getBotOrNull(): Bot?

尝试获取 Bot.

Link copied to clipboard
fun CommandSender.getGroupOrNull(): Group?

尝试获取 Group.

Link copied to clipboard
fun CommandSender.isConsole(): Boolean

thisConsoleCommandSender 时返回 true

Link copied to clipboard
fun CommandSender.isNotConsole(): Boolean

this 不为 ConsoleCommandSender 时返回 true

Link copied to clipboard
fun CommandSender.isNotUser(): Boolean

this 不为 UserCommandSender, 即为 SystemCommandSender 时返回 true

Link copied to clipboard
Link copied to clipboard
fun CommandSender.isSystem(): Boolean

thisSystemCommandSender 时返回 true

Link copied to clipboard
fun CommandSender.isUser(): Boolean

thisUserCommandSender 时返回 true