From 5a63f0a8de51e06fa7ee150ed3239f4102feadb5 Mon Sep 17 00:00:00 2001
From: Sheldan <5037282+Sheldan@users.noreply.github.com>
Date: Sun, 9 Jul 2023 23:09:34 +0200
Subject: [PATCH] [AB-98] adding templates for twitch feature
---
abstracto-modules/pom.xml | 1 +
abstracto-modules/twitch/pom.xml | 38 +++++++++++++++++++
.../twitch/src/main/assembly/assembly.xml | 15 ++++++++
...addTwitchStreamer_response_embed_en_US.ftl | 6 +++
...ngeTwitchStreamer_response_embed_en_US.ftl | 6 +++
...istTwitchStreamer_response_embed_en_US.ftl | 15 ++++++++
...oveTwitchStreamer_response_embed_en_US.ftl | 6 +++
...ready_exists_in_server_exception_en_US.ftl | 1 +
.../streamer_not_exists_exception_en_US.ftl | 1 +
...r_not_exists_in_server_exception_en_US.ftl | 1 +
...eamer_go_live_notification_embed_en_US.ftl | 35 +++++++++++++++++
...eamer_went_offline_message_embed_en_US.ftl | 18 +++++++++
translations/pom.xml | 1 +
translations/twitch/pom.xml | 38 +++++++++++++++++++
.../twitch/src/main/assembly/assembly.xml | 15 ++++++++
...tchStreamer_response_description_en_US.ftl | 1 +
.../addTwitchStreamer_description_en_US.ftl | 1 +
.../addTwitchStreamer_long_help_en_US.ftl | 3 ++
...treamer_parameter_streamerMember_en_US.ftl | 1 +
...hStreamer_parameter_streamerName_en_US.ftl | 1 +
...Streamer_parameter_targetChannel_en_US.ftl | 1 +
...tchStreamer_response_description_en_US.ftl | 1 +
...changeTwitchStreamer_description_en_US.ftl | 1 +
.../changeTwitchStreamer_long_help_en_US.ftl | 6 +++
...witchStreamer_parameter_newValue_en_US.ftl | 1 +
...rty_choice_DISABLE_NOTIFICATIONS_en_US.ftl | 1 +
..._property_choice_STREAMER_MEMBER_en_US.ftl | 1 +
...r_property_choice_TARGET_CHANNEL_en_US.ftl | 1 +
...ter_property_choice_TEMPLATE_KEY_en_US.ftl | 1 +
...witchStreamer_parameter_property_en_US.ftl | 1 +
...hStreamer_parameter_streamerName_en_US.ftl | 1 +
.../listTwitchStreamer_description_en_US.ftl | 1 +
.../listTwitchStreamer_long_help_en_US.ftl | 1 +
...reamer_response_streamer_display_en_US.ftl | 1 +
...removeTwitchStreamer_description_en_US.ftl | 1 +
.../removeTwitchStreamer_long_help_en_US.ftl | 1 +
...hStreamer_parameter_streamerName_en_US.ftl | 1 +
...tchStreamer_response_description_en_US.ftl | 1 +
...ists_in_server_exception_message_en_US.ftl | 1 +
...mer_not_exists_exception_message_en_US.ftl | 1 +
...ists_in_server_exception_message_en_US.ftl | 1 +
...osttarget_twitchLiveNotification_en_US.ftl | 1 +
.../en_US/general/feature_twitch_en_US.ftl | 1 +
.../en_US/general/twitch_color_en_US.ftl | 5 +++
...ive_notification_current_section_en_US.ftl | 2 +
..._live_notification_past_sections_en_US.ftl | 4 ++
...reamer_go_live_notification_text_en_US.ftl | 0
...o_live_notification_watch_button_en_US.ftl | 1 +
...treamer_went_offline_description_en_US.ftl | 1 +
...fline_notification_past_sections_en_US.ftl | 4 ++
..._went_offline_notification_title_en_US.ftl | 1 +
51 files changed, 250 insertions(+)
create mode 100644 abstracto-modules/twitch/pom.xml
create mode 100644 abstracto-modules/twitch/src/main/assembly/assembly.xml
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_embed_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_embed_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_embed_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_embed_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_embed_en_US.ftl
create mode 100644 abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_message_embed_en_US.ftl
create mode 100644 translations/twitch/pom.xml
create mode 100644 translations/twitch/src/main/assembly/assembly.xml
create mode 100644 translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_long_help_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerMember_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerName_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_targetChannel_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_long_help_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_newValue_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_DISABLE_NOTIFICATIONS_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_STREAMER_MEMBER_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TARGET_CHANNEL_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TEMPLATE_KEY_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_streamerName_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_long_help_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_streamer_display_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_long_help_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_parameter_streamerName_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_message_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_message_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_message_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/feature_setup_posttarget_twitchLiveNotification_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/feature_twitch_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_color_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_current_section_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_past_sections_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_text_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_watch_button_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_description_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_past_sections_en_US.ftl
create mode 100644 translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_title_en_US.ftl
diff --git a/abstracto-modules/pom.xml b/abstracto-modules/pom.xml
index 09d32427..fca73677 100644
--- a/abstracto-modules/pom.xml
+++ b/abstracto-modules/pom.xml
@@ -34,6 +34,7 @@
voice-channel-context
anti-raid
custom-command
+ twitch
\ No newline at end of file
diff --git a/abstracto-modules/twitch/pom.xml b/abstracto-modules/twitch/pom.xml
new file mode 100644
index 00000000..8c3be3a0
--- /dev/null
+++ b/abstracto-modules/twitch/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+ dev.sheldan.abstracto-templates.templates
+ abstracto-modules
+ 1.4.18-SNAPSHOT
+
+ 4.0.0
+ pom
+
+ twitch
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+ twitch-templates-${project.version}
+ false
+
+ src/main/assembly/assembly.xml
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/assembly/assembly.xml b/abstracto-modules/twitch/src/main/assembly/assembly.xml
new file mode 100644
index 00000000..aca1e510
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/assembly/assembly.xml
@@ -0,0 +1,15 @@
+
+ zip
+ false
+
+ zip
+
+
+
+ .
+ ${project.basedir}/src/main/resources
+
+
+
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_embed_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_embed_en_US.ftl
new file mode 100644
index 00000000..d84e5a94
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_embed_en_US.ftl
@@ -0,0 +1,6 @@
+{
+ "additionalMessage": "<@safe_include "addTwitchStreamer_response_description"/>",
+ "messageConfig": {
+ "ephemeral": true
+ }
+}
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_embed_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_embed_en_US.ftl
new file mode 100644
index 00000000..c8292bf4
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_embed_en_US.ftl
@@ -0,0 +1,6 @@
+{
+ "additionalMessage": "<@safe_include "changeTwitchStreamer_response_description"/>",
+ "messageConfig": {
+ "ephemeral": true
+ }
+}
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_embed_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_embed_en_US.ftl
new file mode 100644
index 00000000..fa8baeb5
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_embed_en_US.ftl
@@ -0,0 +1,15 @@
+{
+ "embeds": [
+ {
+ <#include "twitch_color">,
+ "description": "<#list streamers as streamer>
+<#assign streamer=streamer>
+<#assign name=streamer.name>
+<#assign targetChannel=streamer.targetChannel.channelMention>
+<#assign showNotificationsDisplay>${streamer.showNotifications?string('✅', '❌')}#assign>
+<#assign streamerURL=streamer.streamerURL>
+<#include "listTwitchStreamer_response_streamer_display"><#sep>
+#list>"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_embed_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_embed_en_US.ftl
new file mode 100644
index 00000000..8d3d49be
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_embed_en_US.ftl
@@ -0,0 +1,6 @@
+{
+ "additionalMessage": "<@safe_include "removeTwitchStreamer_response_description"/>",
+ "messageConfig": {
+ "ephemeral": true
+ }
+}
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_en_US.ftl
new file mode 100644
index 00000000..21948329
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_en_US.ftl
@@ -0,0 +1 @@
+<#include "streamer_already_exists_in_server_exception_message">
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_en_US.ftl
new file mode 100644
index 00000000..a8ca1cfb
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_en_US.ftl
@@ -0,0 +1 @@
+<#include "streamer_not_exists_exception_message">
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_en_US.ftl
new file mode 100644
index 00000000..c5233beb
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_en_US.ftl
@@ -0,0 +1 @@
+<#include "streamer_not_exists_in_server_exception_message">
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_embed_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_embed_en_US.ftl
new file mode 100644
index 00000000..0e62c0d0
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_embed_en_US.ftl
@@ -0,0 +1,35 @@
+<#include "format_instant">
+{
+ <#assign channelName=channelName>
+ <#assign streamerAvatarURL=streamerAvatarURL>
+ <#assign streamURL=streamURL>
+ <#assign title=currentSection.title>
+ <#assign thumbnail=currentSection.thumbnailURL>
+ <#assign viewerCount=currentSection.viewerCount>
+ <#assign roleMention="<@&766751512009244712>"/>
+ "additionalMessage": "<@safe_include "twitch_streamer_go_live_notification_text"/> ${roleMention}",
+ "embeds": [
+ {
+ <#include "twitch_color">,
+ "author": { "name": "${channelName}", "avatar": "${streamerAvatarURL}", "url": "${streamURL}"},
+ "title": {
+ "title": "${title?json_string}"
+ },
+ "description": "<@safe_include "twitch_streamer_go_live_notification_current_section"/> <#if pastSections?? && pastSections?size gt 0><@safe_include "twitch_streamer_go_live_notification_past_sections"/>#if>",
+ "imageUrl": "${thumbnail}"
+ }
+ ],
+ "messageConfig": {
+ "allowsRoleMention": true
+ },
+ "buttons": [
+ {
+ "label": "<@safe_include "twitch_streamer_go_live_notification_watch_button"/>",
+ "url": "${streamURL?json_string}",
+ "buttonStyle": "link",
+ "metaConfig": {
+ "persistCallback": false
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_message_embed_en_US.ftl b/abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_message_embed_en_US.ftl
new file mode 100644
index 00000000..b30ca868
--- /dev/null
+++ b/abstracto-modules/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_message_embed_en_US.ftl
@@ -0,0 +1,18 @@
+<#include "format_instant">
+{
+ "embeds": [
+ {
+ <#include "twitch_color">,
+ <#assign channelName=channelName>
+ <#assign avatarURL=avatarURL>
+ "title": {
+ "title": "<@safe_include "twitch_streamer_went_offline_notification_title"/>"
+ },
+ "author": { "name": "${channelName}", "avatar": "${avatarURL}"},
+ "description": "<@safe_include "twitch_streamer_went_offline_notification_past_sections"/>"
+ <#if offlineImageURL??>,
+ <#assign offlineImageURL=offlineImageURL>
+ "imageUrl": "${offlineImageURL}"#if>
+ }
+ ]
+}
\ No newline at end of file
diff --git a/translations/pom.xml b/translations/pom.xml
index 878db178..714443b3 100644
--- a/translations/pom.xml
+++ b/translations/pom.xml
@@ -34,6 +34,7 @@
voice-channel-context
anti-raid
custom-command
+ twitch
\ No newline at end of file
diff --git a/translations/twitch/pom.xml b/translations/twitch/pom.xml
new file mode 100644
index 00000000..f1dba4bd
--- /dev/null
+++ b/translations/twitch/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+ translations
+ dev.sheldan.abstracto-templates.translations
+ 1.4.18-SNAPSHOT
+
+ 4.0.0
+ pom
+ twitch
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+ twitch-translations-${project.version}
+ false
+
+ src/main/assembly/assembly.xml
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/translations/twitch/src/main/assembly/assembly.xml b/translations/twitch/src/main/assembly/assembly.xml
new file mode 100644
index 00000000..aca1e510
--- /dev/null
+++ b/translations/twitch/src/main/assembly/assembly.xml
@@ -0,0 +1,15 @@
+
+ zip
+ false
+
+ zip
+
+
+
+ .
+ ${project.basedir}/src/main/resources
+
+
+
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_description_en_US.ftl
new file mode 100644
index 00000000..089fca7f
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/addTwitchStreamer_response_description_en_US.ftl
@@ -0,0 +1 @@
+Streamer has been added.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_description_en_US.ftl
new file mode 100644
index 00000000..7a556c3a
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_description_en_US.ftl
@@ -0,0 +1 @@
+Adds a streamer to the notifications
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_long_help_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_long_help_en_US.ftl
new file mode 100644
index 00000000..daafc40f
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_long_help_en_US.ftl
@@ -0,0 +1,3 @@
+Adds a streamer to the list of streamers, to be notified if they go online.
+The streamer is identified by the name in the URL. Per default the notifications are sent to the `liveNotification` post target, but you can provide an optional target channel.
+You can also select a member which is associated with this streamer.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerMember_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerMember_en_US.ftl
new file mode 100644
index 00000000..861abdb1
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerMember_en_US.ftl
@@ -0,0 +1 @@
+The user in this server who is associated with this streamer.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerName_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerName_en_US.ftl
new file mode 100644
index 00000000..d7b86193
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_streamerName_en_US.ftl
@@ -0,0 +1 @@
+The name of the streamer
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_targetChannel_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_targetChannel_en_US.ftl
new file mode 100644
index 00000000..713b2de4
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/addTwitchStreamer/help/addTwitchStreamer_parameter_targetChannel_en_US.ftl
@@ -0,0 +1 @@
+Which channel the notification should be posted in
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_description_en_US.ftl
new file mode 100644
index 00000000..1ef3b51e
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/changeTwitchStreamer_response_description_en_US.ftl
@@ -0,0 +1 @@
+Streamer has been updated.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_description_en_US.ftl
new file mode 100644
index 00000000..ecc43fcd
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_description_en_US.ftl
@@ -0,0 +1 @@
+Used to change existing streamers
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_long_help_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_long_help_en_US.ftl
new file mode 100644
index 00000000..52af6703
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_long_help_en_US.ftl
@@ -0,0 +1,6 @@
+This command can be used to change the configuration of currently existing streamers. In particular:
+If the streamer has an associated member in this server. Do this by mentioning a member in the command.
+The target channel of the streamer. Do this by mentioning the channel in the command.
+
+If you provide something that does not fit the format, the property will be removed.
+For example pass "no member" as the target member, and the member will be removed.
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_newValue_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_newValue_en_US.ftl
new file mode 100644
index 00000000..d69ce4e2
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_newValue_en_US.ftl
@@ -0,0 +1 @@
+The new value of the property
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_DISABLE_NOTIFICATIONS_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_DISABLE_NOTIFICATIONS_en_US.ftl
new file mode 100644
index 00000000..1e5bb0a4
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_DISABLE_NOTIFICATIONS_en_US.ftl
@@ -0,0 +1 @@
+Whether to show notifications: yes/no.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_STREAMER_MEMBER_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_STREAMER_MEMBER_en_US.ftl
new file mode 100644
index 00000000..0f51141f
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_STREAMER_MEMBER_en_US.ftl
@@ -0,0 +1 @@
+Streamer member
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TARGET_CHANNEL_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TARGET_CHANNEL_en_US.ftl
new file mode 100644
index 00000000..d4cc895f
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TARGET_CHANNEL_en_US.ftl
@@ -0,0 +1 @@
+Target channel
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TEMPLATE_KEY_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TEMPLATE_KEY_en_US.ftl
new file mode 100644
index 00000000..bbab6abc
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_choice_TEMPLATE_KEY_en_US.ftl
@@ -0,0 +1 @@
+Template key to use - pass "default" to set to default
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_en_US.ftl
new file mode 100644
index 00000000..048e4a3a
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_property_en_US.ftl
@@ -0,0 +1 @@
+The property you want to change
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_streamerName_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_streamerName_en_US.ftl
new file mode 100644
index 00000000..952ce9c5
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/changeTwitchStreamer/help/changeTwitchStreamer_parameter_streamerName_en_US.ftl
@@ -0,0 +1 @@
+The name of the streamer you want to change
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_description_en_US.ftl
new file mode 100644
index 00000000..65f1d99f
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_description_en_US.ftl
@@ -0,0 +1 @@
+Shows current streamers and their configuration
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_long_help_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_long_help_en_US.ftl
new file mode 100644
index 00000000..65f1d99f
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/help/listTwitchStreamer_long_help_en_US.ftl
@@ -0,0 +1 @@
+Shows current streamers and their configuration
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_streamer_display_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_streamer_display_en_US.ftl
new file mode 100644
index 00000000..2330a4c5
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/listTwitchStreamer/listTwitchStreamer_response_streamer_display_en_US.ftl
@@ -0,0 +1 @@
+`${name}` ([Page](${streamerURL})): ${targetChannel} ${showNotificationsDisplay}.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_description_en_US.ftl
new file mode 100644
index 00000000..01ff2870
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_description_en_US.ftl
@@ -0,0 +1 @@
+Removes a streamer from this server
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_long_help_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_long_help_en_US.ftl
new file mode 100644
index 00000000..636cea9f
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_long_help_en_US.ftl
@@ -0,0 +1 @@
+This command can be used to remove a particular streamer from the server notifications.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_parameter_streamerName_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_parameter_streamerName_en_US.ftl
new file mode 100644
index 00000000..f950f525
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/help/removeTwitchStreamer_parameter_streamerName_en_US.ftl
@@ -0,0 +1 @@
+The streamer to be removed
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_description_en_US.ftl
new file mode 100644
index 00000000..86d883b7
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/commands/removeTwitchStreamer/removeTwitchStreamer_response_description_en_US.ftl
@@ -0,0 +1 @@
+Streamer has been removed.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_message_en_US.ftl b/translations/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_message_en_US.ftl
new file mode 100644
index 00000000..9c76fc82
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/exception/streamer_already_exists_in_server_exception_message_en_US.ftl
@@ -0,0 +1 @@
+Streamer already exists.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_message_en_US.ftl b/translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_message_en_US.ftl
new file mode 100644
index 00000000..b7735fdb
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_exception_message_en_US.ftl
@@ -0,0 +1 @@
+Streamer was not found on Twitch. Only use the name of the Streamer.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_message_en_US.ftl b/translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_message_en_US.ftl
new file mode 100644
index 00000000..2b17f7ab
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/exception/streamer_not_exists_in_server_exception_message_en_US.ftl
@@ -0,0 +1 @@
+Streamer not found.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/feature_setup_posttarget_twitchLiveNotification_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/feature_setup_posttarget_twitchLiveNotification_en_US.ftl
new file mode 100644
index 00000000..4926f4ea
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/feature_setup_posttarget_twitchLiveNotification_en_US.ftl
@@ -0,0 +1 @@
+Channel to sent twitch live notifications in. Currently: ${currentTarget}
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/feature_twitch_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/feature_twitch_en_US.ftl
new file mode 100644
index 00000000..4f61e849
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/feature_twitch_en_US.ftl
@@ -0,0 +1 @@
+Twitch
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_color_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_color_en_US.ftl
new file mode 100644
index 00000000..7bb4fab3
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/twitch_color_en_US.ftl
@@ -0,0 +1,5 @@
+"color" : {
+ "r": 128,
+ "g": 0,
+ "b": 128
+}
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_current_section_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_current_section_en_US.ftl
new file mode 100644
index 00000000..d17ba249
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_current_section_en_US.ftl
@@ -0,0 +1,2 @@
+[${channelName}](${streamURL}) is playing ${currentSection.gameName} for ${currentSection.viewerCount} viewers.
+
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_past_sections_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_past_sections_en_US.ftl
new file mode 100644
index 00000000..92459617
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_past_sections_en_US.ftl
@@ -0,0 +1,4 @@
+They played:
+<#list pastSections as section>
+ <@format_instant_date_time instant=section.startedAt/> `${section.gameName}` - `${section.title}`
+#list>
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_text_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_text_en_US.ftl
new file mode 100644
index 00000000..e69de29b
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_watch_button_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_watch_button_en_US.ftl
new file mode 100644
index 00000000..12560474
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_go_live_notification_watch_button_en_US.ftl
@@ -0,0 +1 @@
+Watch stream
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_description_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_description_en_US.ftl
new file mode 100644
index 00000000..8b6fffee
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_description_en_US.ftl
@@ -0,0 +1 @@
+${channelName} went offline.
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_past_sections_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_past_sections_en_US.ftl
new file mode 100644
index 00000000..92459617
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_past_sections_en_US.ftl
@@ -0,0 +1,4 @@
+They played:
+<#list pastSections as section>
+ <@format_instant_date_time instant=section.startedAt/> `${section.gameName}` - `${section.title}`
+#list>
\ No newline at end of file
diff --git a/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_title_en_US.ftl b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_title_en_US.ftl
new file mode 100644
index 00000000..8b6fffee
--- /dev/null
+++ b/translations/twitch/src/main/resources/en_US/general/twitch_streamer_went_offline_notification_title_en_US.ftl
@@ -0,0 +1 @@
+${channelName} went offline.
\ No newline at end of file