Skip to content
This repository has been archived by the owner on Jan 24, 2023. It is now read-only.

Commit

Permalink
增加Cooldown机制
Browse files Browse the repository at this point in the history
修复一个bug
  • Loading branch information
WhitrayHB committed Sep 10, 2022
1 parent e4482f5 commit c7f8a92
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 2 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
}

group = "cn.whitrayhb"
version = "0.1.3"
version = "0.1.4"

repositories {
maven("https://maven.aliyun.com/repository/public") // 阿里云国内代理仓库
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
import cn.whitrayhb.randomanimal.command.RandomCat;
import cn.whitrayhb.randomanimal.command.RandomDog;
import cn.whitrayhb.randomanimal.command.RandomFox;
import cn.whitrayhb.randomanimal.config.PluginConfig;
import net.mamoe.mirai.console.command.CommandManager;
import net.mamoe.mirai.console.plugin.jvm.JavaPlugin;
import net.mamoe.mirai.console.plugin.jvm.JvmPluginDescriptionBuilder;

public final class RandomAnimalMain extends JavaPlugin {
public static final RandomAnimalMain INSTANCE = new RandomAnimalMain();
private RandomAnimalMain() {
super(new JvmPluginDescriptionBuilder("cn.whitrayhb.randomanimal", "0.1.3")
super(new JvmPluginDescriptionBuilder("cn.whitrayhb.randomanimal", "0.1.4")
.info("咕咕咕")
.name("随机动物图插件")
.author("WhitrayHB")
Expand All @@ -23,5 +24,6 @@ public void onEnable() {
CommandManager.INSTANCE.registerCommand(RandomCat.INSTANCE,true);
CommandManager.INSTANCE.registerCommand(RandomDog.INSTANCE,true);
CommandManager.INSTANCE.registerCommand(RandomFox.INSTANCE,true);
reloadPluginConfig(PluginConfig.RandomAnimal.INSTANCE);
}
}
11 changes: 11 additions & 0 deletions src/main/java/cn/whitrayhb/randomanimal/command/RandomCat.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package cn.whitrayhb.randomanimal.command;

import cn.whitrayhb.randomanimal.RandomAnimalMain;
import cn.whitrayhb.randomanimal.config.PluginConfig;
import cn.whitrayhb.randomanimal.data.CatData;
import cn.whitrayhb.randomanimal.data.FetchPicture;
import cn.whitrayhb.randomanimal.util.Cooler;
import net.mamoe.mirai.console.command.CommandSender;
import net.mamoe.mirai.console.command.ConsoleCommandSender;
import net.mamoe.mirai.console.command.java.JRawCommand;
import net.mamoe.mirai.message.data.*;
import net.mamoe.mirai.utils.ExternalResource;
import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.IOException;
import java.util.Objects;

public class RandomCat extends JRawCommand {

Expand All @@ -25,6 +29,13 @@ private RandomCat() {

@Override
public void onCommand(@NotNull CommandSender sender, @NotNull MessageChain args) {
if(!(sender instanceof ConsoleCommandSender)){
if (Cooler.isLocked(Objects.requireNonNull(sender.getUser()).getId())) {
sender.sendMessage("操作太快了,请稍后再试");
return;
}
Cooler.lock(sender.getUser().getId(), PluginConfig.RandomAnimal.INSTANCE.getCooldown());
}
sender.sendMessage("稍等……猫猫正在跑步前进!");
/*图片保存路径*/
String savePath = "./data/cn.whitrayhb.randomanimal/cache/cat/";
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/cn/whitrayhb/randomanimal/command/RandomDog.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package cn.whitrayhb.randomanimal.command;

import cn.whitrayhb.randomanimal.RandomAnimalMain;
import cn.whitrayhb.randomanimal.config.PluginConfig;
import cn.whitrayhb.randomanimal.data.CatData;
import cn.whitrayhb.randomanimal.data.DogData;
import cn.whitrayhb.randomanimal.data.FetchPicture;
import cn.whitrayhb.randomanimal.util.Cooler;
import net.mamoe.mirai.console.command.CommandSender;
import net.mamoe.mirai.console.command.ConsoleCommandSender;
import net.mamoe.mirai.console.command.java.JRawCommand;
import net.mamoe.mirai.message.data.Image;
import net.mamoe.mirai.message.data.MessageChain;
Expand All @@ -13,6 +16,7 @@

import java.io.File;
import java.io.IOException;
import java.util.Objects;

public class RandomDog extends JRawCommand {

Expand All @@ -27,6 +31,13 @@ private RandomDog() {

@Override
public void onCommand(@NotNull CommandSender sender, @NotNull MessageChain args) {
if(!(sender instanceof ConsoleCommandSender)){
if (Cooler.isLocked(Objects.requireNonNull(sender.getUser()).getId())) {
sender.sendMessage("操作太快了,请稍后再试");
return;
}
Cooler.lock(sender.getUser().getId(), PluginConfig.RandomAnimal.INSTANCE.getCooldown());
}
sender.sendMessage("稍等……狗狗正在跑步前进!");
String savePath;
String url;
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/cn/whitrayhb/randomanimal/command/RandomFox.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
package cn.whitrayhb.randomanimal.command;

import cn.whitrayhb.randomanimal.RandomAnimalMain;
import cn.whitrayhb.randomanimal.config.PluginConfig;
import cn.whitrayhb.randomanimal.data.CatData;
import cn.whitrayhb.randomanimal.data.FetchPicture;
import cn.whitrayhb.randomanimal.data.FoxData;
import cn.whitrayhb.randomanimal.util.Cooler;
import net.mamoe.mirai.console.command.CommandSender;
import net.mamoe.mirai.console.command.ConsoleCommandSender;
import net.mamoe.mirai.console.command.java.JRawCommand;
import net.mamoe.mirai.message.data.*;
import net.mamoe.mirai.utils.ExternalResource;
import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.IOException;
import java.util.Objects;

public class RandomFox extends JRawCommand {

Expand All @@ -26,6 +30,13 @@ private RandomFox() {

@Override
public void onCommand(@NotNull CommandSender sender, @NotNull MessageChain args) {
if(!(sender instanceof ConsoleCommandSender)){
if (Cooler.isLocked(Objects.requireNonNull(sender.getUser()).getId())) {
sender.sendMessage("操作太快了,请稍后再试");
return;
}
Cooler.lock(sender.getUser().getId(), PluginConfig.RandomAnimal.INSTANCE.getCooldown());
}
sender.sendMessage("稍等……狐狐正在跑步前进!");
String savePath = "./data/cn.whitrayhb.randomanimal/cache/fox";
//Powered by AkibaSo/SamukawaUI
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/cn/whitrayhb/randomanimal/config/PluginConfig.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package cn.whitrayhb.randomanimal.config

import net.mamoe.mirai.console.data.AutoSavePluginConfig
import net.mamoe.mirai.console.data.ValueDescription
import net.mamoe.mirai.console.data.value

class PluginConfig {
object RandomAnimal : AutoSavePluginConfig("RandomAnimal") {
@ValueDescription("CD时长,设为-1则禁用")
val cooldown by value<Int>(15)
}
}
46 changes: 46 additions & 0 deletions src/main/java/cn/whitrayhb/randomanimal/util/Cooler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package cn.whitrayhb.randomanimal.util;

import java.util.concurrent.ConcurrentHashMap;

public class Cooler {
private static final ConcurrentHashSet<Long> set = new ConcurrentHashSet<Long>();
public static void lock(long id,int second){
if(second<=0) return;
set.add(id);
Thread unlockThread = new Thread(() ->{
try {
Thread.sleep(second* 1000L);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
unlock(id);
});
unlockThread.start();
}
public static void unlock(long id){
set.remove(id);
}
public static boolean isLocked(long id){
return set.contains(id);
}
}

class ConcurrentHashSet<T>{
private final ConcurrentHashMap<T, Integer> map;
ConcurrentHashSet(){
map = new ConcurrentHashMap<T,Integer>();
}
public void add(T value){
map.put(value,1);
}
public void remove(T value){
map.remove(value,1);
}
public Boolean contains(T value){
return map.containsKey(value);
}
public String mapReturn(){
return String.valueOf(map);
}
}

0 comments on commit c7f8a92

Please sign in to comment.