|
| 1 | +import org.codeoverflow.chatoverflow.api.io.dto.chat.discord.DiscordChatMessage |
| 2 | +import org.codeoverflow.chatoverflow.api.plugin.{PluginImpl, PluginManager} |
| 3 | +import scala.collection.JavaConverters._ |
| 4 | + |
| 5 | +class discordTestPlugin(manager: PluginManager) extends PluginImpl(manager) { |
| 6 | + |
| 7 | + private val discordInputReq = require.input.discordChat("reqDiscordIn", "Discord input", false) |
| 8 | + private val discordOutputReq = require.output.discordChat("reqDiscordOut", "Discord output", false) |
| 9 | + |
| 10 | + override def setup(): Unit = { |
| 11 | + println(s"Input connected to channel ${discordInputReq.get().getChannelId}") |
| 12 | + println(s"Output connected to channel ${discordOutputReq.get().getChannelId}") |
| 13 | + discordInputReq.get.registerMessageHandler(onMessage) |
| 14 | + discordInputReq.get.registerMessageEditHandler(onMessageEdit) |
| 15 | + discordInputReq.get.registerMessageDeleteHandler(onMessageDelete) |
| 16 | + discordOutputReq.get.sendChatMessage("Hey I'm working! \uD83C\uDF89") |
| 17 | + println("Startet succesfully") |
| 18 | + } |
| 19 | + |
| 20 | + override def loop(): Unit = {} |
| 21 | + |
| 22 | + |
| 23 | + override def shutdown(): Unit = println("Plugin stopped") |
| 24 | + |
| 25 | + def onMessage(message: DiscordChatMessage): Unit = { |
| 26 | + if (message.getMessage == "/messages") { |
| 27 | + var s = "**Recent messages:**\n" |
| 28 | + s += discordInputReq.get.getLastMessages(1000*60).asScala.filter(_.getAuthor.getId != discordTestPlugin.BOT_ID).mkString("\n") |
| 29 | + s += "\n\n**Recent private messages:**\n" |
| 30 | + s += discordInputReq.get().getLastPrivateMessages(1000*60).asScala.mkString("\n") |
| 31 | + discordOutputReq.get. sendChatMessage(s) |
| 32 | + } |
| 33 | + } |
| 34 | + |
| 35 | + def onMessageEdit(oldMessage: DiscordChatMessage, newMessage: DiscordChatMessage): Unit = { |
| 36 | + println(s"Message #${oldMessage.getId} was edited from '$oldMessage' to '$newMessage'") |
| 37 | + } |
| 38 | + |
| 39 | + def onMessageDelete(message: DiscordChatMessage): Unit = { |
| 40 | + println(s"Message #${message.getId} was deleted (content: $message)") |
| 41 | + } |
| 42 | +} |
| 43 | +object discordTestPlugin { |
| 44 | + val BOT_ID = "572870096356376576" |
| 45 | +} |
0 commit comments