Compare commits
	
		
			2 commits
		
	
	
		
			
				3ef88bde40
			
			...
			
				24961d3b17
			
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							 | 
						
							
							
								
							
							
	
	
	24961d3b17 | 
						
						
							||
| 
							 | 
						
							
							
								
							
							
	
	
	6663b08c8c | 
						
						
							
					 3 changed files with 14 additions and 2 deletions
				
			
		
							
								
								
									
										7
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								.idea/inspectionProfiles/Project_Default.xml
									
										
									
										generated
									
									
									
								
							| 
						 | 
					@ -1,7 +1,14 @@
 | 
				
			||||||
<component name="InspectionProjectProfileManager">
 | 
					<component name="InspectionProjectProfileManager">
 | 
				
			||||||
  <profile version="1.0">
 | 
					  <profile version="1.0">
 | 
				
			||||||
    <option name="myName" value="Project Default" />
 | 
					    <option name="myName" value="Project Default" />
 | 
				
			||||||
 | 
					    <inspection_tool class="GrazieInspection" enabled="false" level="GRAMMAR_ERROR" enabled_by_default="false" />
 | 
				
			||||||
    <inspection_tool class="InstantiationOfUtilityClass" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
					    <inspection_tool class="InstantiationOfUtilityClass" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
				
			||||||
 | 
					    <inspection_tool class="LanguageDetectionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
				
			||||||
 | 
					    <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
 | 
				
			||||||
 | 
					      <option name="processCode" value="true" />
 | 
				
			||||||
 | 
					      <option name="processLiterals" value="true" />
 | 
				
			||||||
 | 
					      <option name="processComments" value="true" />
 | 
				
			||||||
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="XmlHighlighting" enabled="false" level="ERROR" enabled_by_default="false" />
 | 
					    <inspection_tool class="XmlHighlighting" enabled="false" level="ERROR" enabled_by_default="false" />
 | 
				
			||||||
  </profile>
 | 
					  </profile>
 | 
				
			||||||
</component>
 | 
					</component>
 | 
				
			||||||
| 
						 | 
					@ -2,6 +2,7 @@ package net.hypr.doki.commands.moderation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.freya02.botcommands.api.annotations.BotPermissions;
 | 
					import com.freya02.botcommands.api.annotations.BotPermissions;
 | 
				
			||||||
import com.freya02.botcommands.api.annotations.CommandMarker;
 | 
					import com.freya02.botcommands.api.annotations.CommandMarker;
 | 
				
			||||||
 | 
					import com.freya02.botcommands.api.annotations.Optional;
 | 
				
			||||||
import com.freya02.botcommands.api.annotations.UserPermissions;
 | 
					import com.freya02.botcommands.api.annotations.UserPermissions;
 | 
				
			||||||
import com.freya02.botcommands.api.application.ApplicationCommand;
 | 
					import com.freya02.botcommands.api.application.ApplicationCommand;
 | 
				
			||||||
import com.freya02.botcommands.api.application.annotations.AppOption;
 | 
					import com.freya02.botcommands.api.application.annotations.AppOption;
 | 
				
			||||||
| 
						 | 
					@ -13,6 +14,7 @@ import net.hypr.doki.utils.DurationUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.time.Duration;
 | 
					import java.time.Duration;
 | 
				
			||||||
import java.time.OffsetDateTime;
 | 
					import java.time.OffsetDateTime;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@CommandMarker
 | 
					@CommandMarker
 | 
				
			||||||
@BotPermissions(Permission.MODERATE_MEMBERS)
 | 
					@BotPermissions(Permission.MODERATE_MEMBERS)
 | 
				
			||||||
| 
						 | 
					@ -25,13 +27,15 @@ public class Timeout extends ApplicationCommand {
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    public void timeout(GuildSlashEvent event,
 | 
					    public void timeout(GuildSlashEvent event,
 | 
				
			||||||
                     @AppOption(name = "member") Member member,
 | 
					                     @AppOption(name = "member") Member member,
 | 
				
			||||||
                     @AppOption(name = "duration", description = "ex: 2h5m, must be between 1m and 7d") String duration) {
 | 
					                     @AppOption(name = "duration", description = "ex: 2h5m, must be between 1m and 7d") String duration,
 | 
				
			||||||
 | 
					                     @Optional @AppOption(name = "reason") String reason) {
 | 
				
			||||||
        Duration timeoutDuration = DurationUtils.parseDuration(duration);
 | 
					        Duration timeoutDuration = DurationUtils.parseDuration(duration);
 | 
				
			||||||
        if (!DurationUtils.isDurationBetween(timeoutDuration, Duration.ofMinutes(1), Duration.ofDays(7))) {
 | 
					        if (!DurationUtils.isDurationBetween(timeoutDuration, Duration.ofMinutes(1), Duration.ofDays(7))) {
 | 
				
			||||||
            event.replyFormat("Invalid duration %s!, must be between 1m and 7d", duration).queue();
 | 
					            event.replyFormat("Invalid duration %s!, must be between 1m and 7d", duration).queue();
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        member.timeoutFor(timeoutDuration).queue();
 | 
					        member.timeoutFor(timeoutDuration)
 | 
				
			||||||
 | 
					                .reason(Objects.requireNonNullElse(reason, "No reason provided")).queue();
 | 
				
			||||||
        event.replyFormat("Timed out %s for %s", member.getAsMention(), duration).queue();
 | 
					        event.replyFormat("Timed out %s for %s", member.getAsMention(), duration).queue();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,7 @@ public class DurationUtils {
 | 
				
			||||||
                .plusSeconds(seconds);
 | 
					                .plusSeconds(seconds);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @SuppressWarnings("BooleanMethodIsAlwaysInverted")
 | 
				
			||||||
    public static boolean isDurationBetween(Duration target, Duration lowerThreshold, Duration upperThreshold) {
 | 
					    public static boolean isDurationBetween(Duration target, Duration lowerThreshold, Duration upperThreshold) {
 | 
				
			||||||
        if (target == lowerThreshold || target == upperThreshold) return true;
 | 
					        if (target == lowerThreshold || target == upperThreshold) return true;
 | 
				
			||||||
        return !target.isNegative() &&
 | 
					        return !target.isNegative() &&
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue