java prettyprint-override">private final Set<DiscordCommand> discordGuildCommands = new HashSet<>();
private final Set<DiscordCommand> discordDmCommands = new HashSet<>();
// ...
gateway = DiscordClient.create(discordToken).login().block();
// ...
gateway.getEventDispatcher()
.on(MessageCreateEvent.class)
.filter(event -> !(event.getMessage().getChannel().block() instanceof PrivateChannel))
.filterWhen(event -> event.getMember().get().hasHigherRoles(Roles.REFLEXBOT_CTRL_SINGLETON))
.flatMap(event -> Mono.just(event.getMessage().getContent())
.flatMap(content -> Flux.fromIterable(discordGuildCommands)
.filter(cmd -> content.startsWith(DISCORD_COMMANDS_PREFIX + cmd.getName()))
.flatMap(cmd -> cmd.process(event))
.next()
)
)
.subscribe();
这段代码似乎工作正常,并允许我处理admin guild命令,即由“权限级别”(最高角色级别)至少是我指定的一个的成员在我的Discord服务器的文本通道中发送的命令。
但是如何正确地(反应性地、好地)实现其余的命令呢?我在Reactor中没有找到类似if/else链接的东西,我也不想重复以上代码几次,只更改1-2行过滤器(...)
。
我不熟悉Discord4J,但我认为您应该反向流,并为您的命令添加一些设置。
然后建立你的流程:
Perl条件语句有助于决策,这需要程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的其他条件如果确定条件为假,则执行语句。 以下是大多数编程语言中的典型决策结构的一般性 - 数字0,字符串'0'和“”,空列表()和undef在布尔上下文中都是false ,所有其他值都为true 。 否定真正的价值! 或not返回特殊的假值。 Perl编程语言提供
本文向大家介绍C# if, if...else, if... else if ,包括了C# if, if...else, if... else if 的使用技巧和注意事项,需要的朋友参考一下 示例 该if语句用于控制程序的流程。一条if语句根据Boolean表达式的值标识要运行的语句。 对于单个语句,braces{}是可选的,但建议使用。 该if还可以有一个else条款,将在案件条件的计算结果来执
if语句之后可以跟一个可选的else if...else语句,这对于使用单个if ... else if语句测试各种条件非常有用。 当使用if...else if…else语句时,请记住 - 一个if可以有零个或一个else语句,它必须在任何其他if之后。 如果语句可以有零到多个if,它们必须在else之前。 一旦else if成功,其余的if或else语句都不会被测试。 if ... else
问题内容: 我的任务是处理一些代码,并且有一个巨大的if-else-if链(超过100个else-ifs)检查Strings。 有什么好的技术可以更新此代码,以便将if-else-if链压缩到更易于管理的位置。 链看起来像这样: 问题答案: 您可以将每个分支中的代码提取到一个单独的方法中,然后将这些方法转换为公共基本接口的实现(我们称之为)。之后,您可以填充一个,然后查找并为给定的字符串执行正确的
if语句后面可以跟一个else if...else语句,这对于使用单个if ... else if语句测试各种条件非常有用。 当使用if, else if, else语句时,要记住几点。 一个if可以有零个或一个else的,它必须在任何其他if之后。 一个if可以有零到多个else if是,他们必须在其他之前。 一旦else if成功, else if任何其他else if else不会被测试。
if语句构造可以有一个或多个可选的else-if构造。 当if条件失败时,紧接着执行else-if 。 当else-if也失败时,执行其后继else-if语句(如果有的话),依此类推。 可选的else放在最后,当上述任何条件都不成立时执行。 所有其他语句(else-if和else)都是可选的。 else-if可以使用一次或多次。 else必须始终放在构造的末尾,并且只能出现一次。 语法 (Synt