File tree 17 files changed +156
-24
lines changed
src/main/kotlin/tech/egglink/projects/linkbot
17 files changed +156
-24
lines changed Original file line number Diff line number Diff line change 1
1
# 项目排除路径
2
2
/.gradle /
3
3
/build /
4
- /build /classes /kotlin /main /
4
+ /build /classes /kotlin /main /
5
+ /config.json
6
+ /LinkBot-1.0.0.jar
7
+ /data /
8
+ /device.json
9
+ /plugins /
10
+ /cache /
11
+ /logs /
Original file line number Diff line number Diff line change 1
1
[versions ]
2
2
kotlin = " 1.8.10"
3
- ktor = " 2.1.2"
4
3
exposed = " 0.41.1"
5
4
6
5
[plugins ]
7
6
kotlin-serialization = { id = " org.jetbrains.kotlin.plugin.serialization" , version.ref = " kotlin" }
8
- ktlint = { id = " org.jlleitschuh.gradle.ktlint" , version = " 11.2 .0" }
7
+ ktlint = { id = " org.jlleitschuh.gradle.ktlint" , version = " 11.4 .0" }
9
8
abi-validator = { id = " org.jetbrains.kotlinx.binary-compatibility-validator" , version = " 0.12.1" }
10
9
spotless = { id = " com.diffplug.spotless" , version = " 6.15.0" }
11
10
licensee = { id = " app.cash.licensee" , version = " 1.6.0" }
Original file line number Diff line number Diff line change @@ -2,9 +2,9 @@ rootProject.name = "LinkBot"
2
2
3
3
pluginManagement {
4
4
repositories {
5
- maven(" https://maven.aliyun.com/repository/public/" )
6
- maven(" https://maven.aliyun.com/repository/gradle-plugin/" )
7
5
maven(url = " https://plugins.gradle.org/m2/" )
6
+ maven(" https://maven.aliyun.com/repository/gradle-plugin/" )
7
+ maven(" https://maven.aliyun.com/repository/public/" )
8
8
mavenCentral()
9
9
}
10
10
}
Original file line number Diff line number Diff line change @@ -12,7 +12,10 @@ class Bot {
12
12
13
13
/* *
14
14
* 机器人登录
15
- * */
15
+ *
16
+ * @param account QQ 号
17
+ * @param password 密码
18
+ */
16
19
fun login (account : Long , password : String ) {
17
20
bot = Mirai .BotFactory .newBot(
18
21
account,
Original file line number Diff line number Diff line change @@ -3,6 +3,9 @@ package tech.egglink.projects.linkbot.command
3
3
import net.mamoe.mirai.contact.Contact
4
4
import net.mamoe.mirai.contact.Group
5
5
6
+ /* *
7
+ * 用于 Bot 的 CommandSender
8
+ * */
6
9
interface BotCommandSender : CommandSender {
7
10
val sender: Contact
8
11
val group: Group
Original file line number Diff line number Diff line change 1
1
package tech.egglink.projects.linkbot.command
2
2
3
+ /* *
4
+ * 命令实例
5
+ *
6
+ * 所有的命令都应该继承这个类
7
+ * @param entry 命令信息
8
+ * */
3
9
abstract class CommandHandler (val entry : Entry ) {
10
+ /* *
11
+ * 命令信息
12
+ *
13
+ * @property name 命令名
14
+ * @property description 命令描述
15
+ * @property usage 命令用法
16
+ * @property aliases 命令别名
17
+ * @property type 命令类型
18
+ * @property argsType 参数类型
19
+ * @property defaultArgs 默认参数
20
+ * @property permission 权限
21
+ * */
4
22
open class Entry {
5
23
var name: String = " "
6
24
var description: String = " "
@@ -20,5 +38,8 @@ abstract class CommandHandler(val entry: Entry) {
20
38
var permission: String = " true"
21
39
}
22
40
41
+ /* *
42
+ * 命令执行
43
+ * */
23
44
abstract suspend fun execute (sender : CommandSender , args : Array <String >): CommandResult
24
45
}
Original file line number Diff line number Diff line change 1
1
package tech.egglink.projects.linkbot.command
2
2
3
+ /* *
4
+ * 命令结果
5
+ *
6
+ * @property SUCCESS 成功
7
+ * @property FAILURE 失败
8
+ * @property ERROR 错误
9
+ * @property NOT_FOUND 未找到
10
+ * @property NO_PERMISSION 无权限
11
+ * @property INVALID_USAGE 无效用法
12
+ * */
3
13
enum class CommandResult {
4
- SUCCESS ,
5
- FAILURE ,
6
- ERROR ,
7
- NOT_FOUND ,
8
- NO_PERMISSION ,
9
- INVALID_USAGE
14
+ SUCCESS , // 成功
15
+ FAILURE , // 失败
16
+ ERROR , // 错误
17
+ NOT_FOUND , // 未找到
18
+ NO_PERMISSION , // 无权限
19
+ INVALID_USAGE // 无效用法
10
20
}
Original file line number Diff line number Diff line change 1
1
package tech.egglink.projects.linkbot.command
2
2
3
+ /* *
4
+ * 命令发送者实例
5
+ * */
3
6
interface CommandSender {
7
+ /* *
8
+ * 发送消息
9
+ *
10
+ * @param message 消息
11
+ * */
4
12
suspend fun sendMessage (message : String )
5
13
14
+ /* *
15
+ * 检查是否有权限
16
+ *
17
+ * @param permission 权限
18
+ * */
6
19
fun hasPermission (permission : String ): Boolean
7
20
}
Original file line number Diff line number Diff line change 1
1
package tech.egglink.projects.linkbot.command
2
2
3
+ /* *
4
+ * 命令类型
5
+ *
6
+ * @property Bot 机器人
7
+ * @property Console 控制台
8
+ * */
3
9
enum class CommandType {
4
- Bot ,
5
- Console
10
+ Bot , // 机器人
11
+ Console // 控制台
6
12
}
Original file line number Diff line number Diff line change @@ -28,6 +28,9 @@ class Commands {
28
28
registerCommand(CommandLogout ())
29
29
}
30
30
31
+ /* *
32
+ * 注册所有机器人命令
33
+ * */
31
34
fun registerBotCommands () {
32
35
registerCommand(tech.egglink.projects.linkbot.command.cmd.bot.CommandHelp ())
33
36
}
Original file line number Diff line number Diff line change @@ -2,12 +2,23 @@ package tech.egglink.projects.linkbot.command
2
2
3
3
import tech.egglink.projects.linkbot.utils.Utils
4
4
5
+ /* *
6
+ * 用于控制台的 CommandSender
7
+ * */
5
8
class ConsoleCommandSender : CommandSender {
9
+ /* *
10
+ * 发送消息
11
+ *
12
+ * @param message 消息
13
+ * */
6
14
override suspend fun sendMessage (message : String ) {
7
15
Utils .logger.info(message)
8
16
}
9
17
10
- override fun hasPermission (permission : String ): Boolean {
11
- return true
12
- }
18
+ /* *
19
+ * 检查是否有权限
20
+ *
21
+ * @param permission 权限
22
+ * */
23
+ override fun hasPermission (permission : String ): Boolean = true
13
24
}
Original file line number Diff line number Diff line change 1
1
package tech.egglink.projects.linkbot.dataprovider
2
2
3
+ /* *
4
+ * 数据提供器
5
+ * */
3
6
class DataProvider {
7
+ /* *
8
+ * 通过 QQ 号新建用户数据
9
+ *
10
+ * @param qq QQ 号
11
+ * */
4
12
fun createUserData (qq : Long ) {
13
+ UserData (qq)
5
14
}
6
15
}
Original file line number Diff line number Diff line change 1
1
package tech.egglink.projects.linkbot.dataprovider
2
2
3
- class UserData {
3
+ data class UserData (
4
4
/* *
5
5
* QQ 号 用于核对
6
6
* */
7
- var qqId: Long = 0L
7
+ var qqId : Long = 0L ,
8
8
9
9
/* *
10
10
* 被授予 True 权限的权限
11
11
* */
12
- val permissionTrue: Array <String > = arrayOf()
12
+ val permissionTrue : Array <String > = arrayOf(),
13
13
14
14
/* *
15
15
* 被授予 False 权限的权限
16
16
* */
17
17
val permissionFalse : Array <String > = arrayOf()
18
+ ) {
19
+ override fun equals (other : Any? ): Boolean {
20
+ if (this == = other) return true
21
+ if (javaClass != other?.javaClass) return false
22
+
23
+ other as UserData
24
+
25
+ if (qqId != other.qqId) return false
26
+ if (! permissionTrue.contentEquals(other.permissionTrue)) return false
27
+ return permissionFalse.contentEquals(other.permissionFalse)
28
+ }
29
+
30
+ override fun hashCode (): Int {
31
+ var result = qqId.hashCode()
32
+ result = 31 * result + permissionTrue.contentHashCode()
33
+ result = 31 * result + permissionFalse.contentHashCode()
34
+ return result
35
+ }
18
36
}
Original file line number Diff line number Diff line change 1
1
package tech.egglink.projects.linkbot.event
2
2
3
+ /* *
4
+ * 不清楚干什么的了
5
+ */
3
6
class CommandEvent : net.mamoe.mirai.event.Event {
4
7
override val isIntercepted: Boolean = false
5
8
Original file line number Diff line number Diff line change @@ -12,6 +12,9 @@ import net.mamoe.mirai.event.events.GroupNameChangeEvent
12
12
import net.mamoe.mirai.event.events.MemberJoinRequestEvent
13
13
import tech.egglink.projects.linkbot.utils.Utils
14
14
15
+ /* *
16
+ * 事件监听器
17
+ * */
15
18
object EventListener {
16
19
fun beginListen () {
17
20
Utils .bot.getBot().eventChannel.subscribeAlways<BotEvent > {
Original file line number Diff line number Diff line change @@ -2,24 +2,50 @@ package tech.egglink.projects.linkbot.event
2
2
3
3
import tech.egglink.projects.linkbot.utils.Utils
4
4
5
+ /* *
6
+ * 事件管理器
7
+ * */
5
8
class EventManager {
6
9
7
- private val events = mutableListOf<Event >()
10
+ private val events = mutableListOf<Event >() // 事件列表
11
+
12
+ /* *
13
+ * 注册事件
14
+ *
15
+ * @param events 事件列表
16
+ * */
8
17
fun registerEvents (vararg events : Event ) {
9
18
events.forEach { event ->
10
19
registerEvent(event)
11
20
}
12
21
}
22
+
23
+ /* *
24
+ * 注册事件
25
+ *
26
+ * @param events 事件列表
27
+ * */
13
28
fun registerEvents (events : List <Event >) {
14
29
events.forEach { event ->
15
30
registerEvent(event)
16
31
}
17
32
}
18
33
34
+ /* *
35
+ * 注册单个事件
36
+ *
37
+ * @param event 事件
38
+ * */
19
39
fun registerEvent (event : Event ) {
20
40
events.add(event)
21
41
}
22
42
43
+ /* *
44
+ * 广播事件
45
+ *
46
+ * @param eventType 事件类型
47
+ * @param evt 事件
48
+ * */
23
49
fun broadcastEvent (eventType : EventType , evt : net.mamoe.mirai.event.Event = CommandEvent ()) {
24
50
eventType.let {
25
51
Utils .logger.debug(" 事件广播: ${it.javaClass.simpleName} (${it.hashCode()} )" )
Original file line number Diff line number Diff line change @@ -21,8 +21,6 @@ class Message {
21
21
val loginDescription = " 登录机器人."
22
22
val logoutUsage = " logout"
23
23
val logoutDescription = " 登出机器人."
24
- val databaseUsage = " database find <qq>"
25
- val databaseDescription = " 查看数据库."
26
24
}
27
25
val command = Command ()
28
26
@@ -34,7 +32,6 @@ class Message {
34
32
val unknownCommand = " 未知命令!"
35
33
val noPermission = " 没有权限!"
36
34
val invalidArgs = " 参数错误!"
37
- val databaseNotFound = " 数据库中未找到!"
38
35
}
39
36
val error = Error ()
40
37
You can’t perform that action at this time.
0 commit comments