关键词回复
监听群消息关键词并自动回复。复制
class KeywordPlugin : PluginPackage() {
override val id = "com.example.keyword"
override val name = "关键词回复"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.groupKeyword("你好", "hello")
) { event ->
val reply = message {
at(event.sender.userId)
text(" 你好!")
}.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
}
}
命令处理
处理以/ 开头的命令。
复制
class CommandPlugin : PluginPackage() {
override val id = "com.example.command"
override val name = "命令插件"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.groupStartsWith("/")
) { event ->
when {
event.rawMessage == "/help" -> {
val help = message {
text("可用命令:\n")
text("/help - 帮助\n")
text("/ping - 测试\n")
text("/time - 时间")
}.build()
messageApi?.sendGroupMessage(event.groupId, help)
}
event.rawMessage == "/ping" -> {
val reply = message { text("Pong!") }.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
event.rawMessage == "/time" -> {
val time = java.time.LocalDateTime.now()
.format(java.time.format.DateTimeFormatter.ofPattern("HH:mm:ss"))
val reply = message { text("当前时间:$time") }.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
}
}
}
}
欢迎新成员
自动欢迎新加入的群成员。复制
class WelcomePlugin : PluginPackage() {
override val id = "com.example.welcome"
override val name = "欢迎插件"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onNotice(
filter = { it is GroupIncreaseNotice }
) { event ->
if (event is GroupIncreaseNotice) {
val welcome = message {
at(event.userId)
text(" 欢迎加入本群!\n")
text("请阅读群公告了解群规")
}.build()
messageApi?.sendGroupMessage(event.groupId, welcome)
}
}
}
}
自动同意好友请求
自动处理好友添加请求。复制
class AutoFriendPlugin : PluginPackage() {
override val id = "com.example.autofriend"
override val name = "自动加好友"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onRequest(
filter = { it is FriendRequest }
) { event ->
if (event is FriendRequest) {
friendApi?.setFriendAddRequest(
flag = event.flag,
approve = true,
remark = "来自机器人"
)
delay(1000)
val welcome = message {
text("你好!感谢添加我为好友")
}.build()
messageApi?.sendPrivateMessage(event.userId, welcome)
}
}
}
}
图片发送
发送图片消息。复制
class ImagePlugin : PluginPackage() {
override val id = "com.example.image"
override val name = "图片插件"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.groupKeyword("来张图")
) { event ->
val imageMsg = message {
text("这是一张图片:\n")
image("https://example.com/image.jpg")
}.build()
messageApi?.sendGroupMessage(event.groupId, imageMsg)
}
}
}
复读机
复读群消息。复制
class RepeatPlugin : PluginPackage() {
override val id = "com.example.repeat"
override val name = "复读机"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.groupStartsWith("复读:")
) { event ->
val content = event.rawMessage.removePrefix("复读:")
val reply = message { text(content) }.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
}
}
管理员命令
检查权限并执行管理命令。复制
class AdminPlugin : PluginPackage() {
override val id = "com.example.admin"
override val name = "管理插件"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.groupStartsWith("/ban")
) { event ->
if (event.sender.role == "admin" || event.sender.role == "owner") {
val atSegments = event.message.filterIsInstance<OB11Segment.At>()
atSegments.forEach { at ->
groupApi?.setGroupBan(
event.groupId,
at.data.qq.toLong(),
600
)
}
val reply = message { text("已执行禁言操作") }.build()
messageApi?.sendGroupMessage(event.groupId, reply)
} else {
val reply = message { text("权限不足") }.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
}
}
}
签到系统
简单的签到积分系统。复制
class CheckInPlugin : PluginPackage() {
override val id = "com.example.checkin"
override val name = "签到插件"
override val version = "1.0.0"
private val points = mutableMapOf<Long, Int>()
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.groupKeyword("签到")
) { event ->
val userId = event.sender.userId
val currentPoints = points.getOrDefault(userId, 0)
points[userId] = currentPoints + 10
val reply = message {
at(userId)
text(" 签到成功!\n")
text("获得 10 积分\n")
text("当前积分:${points[userId]}")
}.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
pluginContext.onGroupMessage(
filter = Filters.groupKeyword("积分", "查询积分")
) { event ->
val userId = event.sender.userId
val currentPoints = points.getOrDefault(userId, 0)
val reply = message {
at(userId)
text(" 当前积分:$currentPoints")
}.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
}
}
定时任务
使用协程实现定时任务。复制
class SchedulePlugin : PluginPackage() {
override val id = "com.example.schedule"
override val name = "定时任务"
override val version = "1.0.0"
private val scope = CoroutineScope(Dispatchers.Default + SupervisorJob())
override suspend fun onBotContextReady() {
scope.launch {
while (isActive) {
val now = java.time.LocalTime.now()
if (now.hour == 12 && now.minute == 0) {
sendLunchReminder()
}
delay(60000) // 每分钟检查一次
}
}
}
private suspend fun sendLunchReminder() {
val groupId = 123456789L
val message = message {
text("中午好!该吃午饭了~")
}.build()
messageApi?.sendGroupMessage(groupId, message)
}
override suspend fun onDisable() {
scope.cancel()
}
}
消息撤回
发送消息后自动撤回。复制
class RecallPlugin : PluginPackage() {
override val id = "com.example.recall"
override val name = "消息撤回"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.groupKeyword("测试撤回")
) { event ->
val testMsg = message {
text("这条消息将在 5 秒后撤回")
}.build()
val response = messageApi?.sendGroupMessageAwait(
event.groupId,
testMsg
)
if (response != null) {
delay(5000)
messageApi?.deleteMessage(response.data.messageId)
}
}
}
}
组合过滤器
使用多个条件过滤消息。复制
class FilterPlugin : PluginPackage() {
override val id = "com.example.filter"
override val name = "过滤器示例"
override val version = "1.0.0"
override suspend fun onBotContextReady() {
pluginContext.onGroupMessage(
filter = Filters.and(
Filters.groupKeyword("搜索"),
Filters.fromGroup(123456789L)
)
) { event ->
val reply = message {
text("在指定群中收到搜索关键词")
}.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
pluginContext.onGroupMessage(
filter = Filters.or(
Filters.groupKeyword("查询"),
Filters.groupKeyword("搜索")
)
) { event ->
val reply = message {
text("收到查询或搜索关键词")
}.build()
messageApi?.sendGroupMessage(event.groupId, reply)
}
}
}
注意事项
- 所有示例代码需在
onBotContextReady()中注册监听器 - API 调用建议使用安全调用
?.避免空指针 - 定时任务记得在
onDisable()中取消
- 示例代码仅供参考,实际使用时需根据需求调整
- 建议添加异常处理和日志记录
- 涉及数据存储的功能建议使用数据库或配置文件
