rebasing
This commit is contained in:
parent
feb82122b8
commit
e05bd9fe9c
@ -3,17 +3,13 @@
|
|||||||
*/
|
*/
|
||||||
package dev.jansel.feixiao
|
package dev.jansel.feixiao
|
||||||
|
|
||||||
import com.github.philippheuer.events4j.reactor.ReactorEventHandler
|
|
||||||
import com.github.twitch4j.TwitchClient
|
import com.github.twitch4j.TwitchClient
|
||||||
import com.github.twitch4j.TwitchClientBuilder
|
import com.github.twitch4j.TwitchClientBuilder
|
||||||
import com.github.twitch4j.events.ChannelGoLiveEvent
|
import com.github.twitch4j.events.ChannelGoLiveEvent
|
||||||
import dev.jansel.feixiao.database.collections.StreamerCollection
|
import dev.jansel.feixiao.database.collections.StreamerCollection
|
||||||
import dev.jansel.feixiao.extensions.EventHooks
|
import dev.jansel.feixiao.extensions.EventHooks
|
||||||
import dev.jansel.feixiao.extensions.StreamerCommand
|
import dev.jansel.feixiao.extensions.StreamerCommand
|
||||||
import dev.jansel.feixiao.utils.database
|
import dev.jansel.feixiao.utils.*
|
||||||
import dev.jansel.feixiao.utils.token
|
|
||||||
import dev.jansel.feixiao.utils.twitchcid
|
|
||||||
import dev.jansel.feixiao.utils.twitchcs
|
|
||||||
import dev.kord.core.entity.channel.GuildMessageChannel
|
import dev.kord.core.entity.channel.GuildMessageChannel
|
||||||
import dev.kordex.core.ExtensibleBot
|
import dev.kordex.core.ExtensibleBot
|
||||||
import dev.kordex.core.i18n.SupportedLocales
|
import dev.kordex.core.i18n.SupportedLocales
|
||||||
@ -23,10 +19,12 @@ import kotlinx.coroutines.runBlocking
|
|||||||
|
|
||||||
var twitchClient: TwitchClient? = null
|
var twitchClient: TwitchClient? = null
|
||||||
val logger = KotlinLogging.logger { }
|
val logger = KotlinLogging.logger { }
|
||||||
|
var botRef : ExtensibleBot? = null
|
||||||
|
|
||||||
suspend fun main() {
|
suspend fun main() {
|
||||||
val bot = ExtensibleBot(token) {
|
botRef = ExtensibleBot(token) {
|
||||||
database(true)
|
database(true)
|
||||||
|
twitch(true)
|
||||||
extensions {
|
extensions {
|
||||||
add(::EventHooks)
|
add(::EventHooks)
|
||||||
add(::StreamerCommand)
|
add(::StreamerCommand)
|
||||||
@ -35,55 +33,8 @@ suspend fun main() {
|
|||||||
applicationCommandLocale(SupportedLocales.ENGLISH, SupportedLocales.GERMAN)
|
applicationCommandLocale(SupportedLocales.ENGLISH, SupportedLocales.GERMAN)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
twitchClient = TwitchClientBuilder.builder()
|
|
||||||
.withEnableHelix(true)
|
|
||||||
.withClientId(twitchcid)
|
|
||||||
.withClientSecret(twitchcs)
|
|
||||||
.withDefaultEventHandler(ReactorEventHandler::class.java)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
twitchClient!!.eventManager.onEvent(ChannelGoLiveEvent::class.java) {
|
botRef!!.start()
|
||||||
logger.info { "${it.channel.name} went live!" }
|
|
||||||
runBlocking {
|
|
||||||
launch {
|
|
||||||
val streamer = StreamerCollection().getData(it.channel.name)
|
|
||||||
for (server in streamer!!.servers) {
|
|
||||||
val channel = bot.kordRef.getChannelOf<GuildMessageChannel>(server.channelId)
|
|
||||||
val role = server.roleId
|
|
||||||
val livemessage = server.liveMessage
|
|
||||||
|
|
||||||
if (role != null) {
|
|
||||||
if (livemessage != null) {
|
|
||||||
channel?.createMessage(
|
|
||||||
livemessage
|
|
||||||
.replace("{name}", it.channel.name)
|
|
||||||
.replace("{category}", it.stream.gameName)
|
|
||||||
.replace("{title}", it.stream.title)
|
|
||||||
.replace("{url}", "https://twitch.tv/${it.channel.name}")
|
|
||||||
.replace("{role}", "<@&$role>")
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
channel?.createMessage("<@&$role> https://twitch.tv/${it.channel.name} went live streaming ${it.stream.gameName}: ${it.stream.title}")
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (livemessage != null) {
|
|
||||||
channel?.createMessage(
|
|
||||||
livemessage
|
|
||||||
.replace("{name}", it.channel.name)
|
|
||||||
.replace("{category}", it.stream.gameName)
|
|
||||||
.replace("{title}", it.stream.title)
|
|
||||||
.replace("{url}", "https://twitch.tv/${it.channel.name}")
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
channel?.createMessage("https://twitch.tv/${it.channel.name} went live streaming ${it.stream.gameName}: ${it.stream.title}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bot.start()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
40
src/main/kotlin/dev/jansel/feixiao/utils/Twitch.kt
Normal file
40
src/main/kotlin/dev/jansel/feixiao/utils/Twitch.kt
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package dev.jansel.feixiao.utils
|
||||||
|
|
||||||
|
import com.github.twitch4j.TwitchClientBuilder
|
||||||
|
import com.github.twitch4j.events.ChannelGoLiveEvent
|
||||||
|
import dev.jansel.feixiao.botRef
|
||||||
|
import dev.jansel.feixiao.database.collections.StreamerCollection
|
||||||
|
import dev.jansel.feixiao.twitchClient
|
||||||
|
import dev.kord.core.entity.channel.GuildMessageChannel
|
||||||
|
import dev.kordex.core.koin.KordExKoinComponent
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
|
class Twitch : KordExKoinComponent {
|
||||||
|
suspend fun init() {
|
||||||
|
twitchClient = TwitchClientBuilder.builder()
|
||||||
|
.withEnableHelix(true)
|
||||||
|
.withClientId(twitchcid)
|
||||||
|
.withClientSecret(twitchcs)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
twitchClient!!.eventManager.onEvent(ChannelGoLiveEvent::class.java) {
|
||||||
|
dev.jansel.feixiao.logger.info { "${it.channel.name} went live!" }
|
||||||
|
runBlocking {
|
||||||
|
launch {
|
||||||
|
val streamer = StreamerCollection().getData(it.channel.name)
|
||||||
|
val channel = botRef!!.kordRef.getChannelOf<GuildMessageChannel>(streamer!!.servers.first().channelId)
|
||||||
|
val role = streamer.servers.first().roleId
|
||||||
|
if (role != null) {
|
||||||
|
channel?.createMessage("<@&$role> https://twitch.tv/${it.channel.name} went live streaming ${it.stream.gameName}: ${it.stream.title}")
|
||||||
|
} else {
|
||||||
|
channel?.createMessage("${it.channel.name} went live: ${it.stream.title}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -1,12 +1,17 @@
|
|||||||
package dev.jansel.feixiao.utils
|
package dev.jansel.feixiao.utils
|
||||||
|
|
||||||
|
import com.github.twitch4j.TwitchClientBuilder
|
||||||
|
import com.github.twitch4j.events.ChannelGoLiveEvent
|
||||||
import dev.jansel.feixiao.database.Database
|
import dev.jansel.feixiao.database.Database
|
||||||
import dev.jansel.feixiao.database.collections.MetaCollection
|
import dev.jansel.feixiao.database.collections.MetaCollection
|
||||||
import dev.jansel.feixiao.database.collections.StreamerCollection
|
import dev.jansel.feixiao.database.collections.StreamerCollection
|
||||||
|
import dev.jansel.feixiao.twitchClient
|
||||||
import dev.kord.common.entity.Snowflake
|
import dev.kord.common.entity.Snowflake
|
||||||
|
import dev.kord.core.entity.channel.GuildMessageChannel
|
||||||
import dev.kordex.core.builders.ExtensibleBotBuilder
|
import dev.kordex.core.builders.ExtensibleBotBuilder
|
||||||
import dev.kordex.core.utils.env
|
import dev.kordex.core.utils.env
|
||||||
import dev.kordex.core.utils.loadModule
|
import dev.kordex.core.utils.loadModule
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.koin.dsl.bind
|
import org.koin.dsl.bind
|
||||||
|
|
||||||
@ -37,3 +42,18 @@ suspend inline fun ExtensibleBotBuilder.database(migrate: Boolean) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend inline fun ExtensibleBotBuilder.twitch(active: Boolean) {
|
||||||
|
hooks {
|
||||||
|
beforeKoinSetup {
|
||||||
|
loadModule {
|
||||||
|
single { Twitch() } bind Twitch::class
|
||||||
|
}
|
||||||
|
|
||||||
|
if (active) {
|
||||||
|
Twitch().init()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user