essential-actions
Clone or download
Modified Files
#!/bin/bash
#!/bin/bash
FOLD=PreBuiltPlugins
FOLD=PreBuiltPlugins
DEPS=Dependencies
DEPS=Dependencies
hotkey() {
hotkey() {
pushd . || exit
pushd . || exit
cd hotkeyaction && mvn clean -Dmaven.test.skip package
cd hotkeyaction && mvn clean -Dmaven.test.skip package
mv target/hotkeyaction-*.jar ../$FOLD/hotkeyaction.jar
mv target/hotkeyaction-*.jar ../$FOLD/hotkeyaction.jar
popd || exit
popd || exit
}
}
mediakey() {
mediakey() {
pushd . || exit
pushd . || exit
cd mediakeyaction && mvn clean -Dmaven.test.skip package
cd mediakeyaction && mvn clean -Dmaven.test.skip package
mv target/mediakeyaction-*.jar ../$FOLD/mediakeyaction.jar
mv target/mediakeyaction-*.jar ../$FOLD/mediakeyaction.jar
popd || exit
popd || exit
}
}
obssuite() {
obssuite() {
pushd . || exit
pushd . || exit
cd obssuite/mother && mvn clean install -Dmaven.test.skip package
cd obssuite/mother && mvn clean install -Dmaven.test.skip package
mv target/obssuite_motheraction-*.jar ../../$FOLD/obssuite_motheraction.jar
mv target/obssuite_motheraction-*.jar ../../$FOLD/obssuite_motheraction.jar
cd ../setcurrentprofile && mvn clean -Dmaven.test.skip package
cd ../setcurrentprofile && mvn clean -Dmaven.test.skip package
mv target/obssuite_setcurrentprofileaction-*.jar ../../$FOLD/obssuite_setcurrentprofileaction.jar
mv target/obssuite_setcurrentprofileaction-*.jar ../../$FOLD/obssuite_setcurrentprofileaction.jar
cd ../setcurrentscene && mvn clean -Dmaven.test.skip package
cd ../setcurrentscene && mvn clean -Dmaven.test.skip package
mv target/obssuite_setcurrentsceneaction-*.jar ../../$FOLD/obssuite_setcurrentsceneaction.jar
mv target/obssuite_setcurrentsceneaction-*.jar ../../$FOLD/obssuite_setcurrentsceneaction.jar
cd ../setcurrenttransition && mvn clean -Dmaven.test.skip package
cd ../setcurrenttransition && mvn clean -Dmaven.test.skip package
mv target/obssuite_setcurrenttransitionaction-*.jar ../../$FOLD/obssuite_setcurrenttransitionaction.jar
mv target/obssuite_setcurrenttransitionaction-*.jar ../../$FOLD/obssuite_setcurrenttransitionaction.jar
cd ../setmute && mvn clean -Dmaven.test.skip package
cd ../setmute && mvn clean -Dmaven.test.skip package
mv target/obssuite_setmuteaction-*.jar ../../$FOLD/obssuite_setmuteaction.jar
mv target/obssuite_setmuteaction-*.jar ../../$FOLD/obssuite_setmuteaction.jar
cd ../setcurrentprofile && mvn clean -Dmaven.test.skip package
cd ../setcurrentprofile && mvn clean -Dmaven.test.skip package
mv target/obssuite_setcurrentprofileaction-*.jar ../../$FOLD/obssuite_setcurrentprofileaction.jar
mv target/obssuite_setcurrentprofileaction-*.jar ../../$FOLD/obssuite_setcurrentprofileaction.jar
cd ../setpreviewscene && mvn clean -Dmaven.test.skip package
cd ../setpreviewscene && mvn clean -Dmaven.test.skip package
mv target/obssuite_setpreviewsceneaction-*.jar ../../$FOLD/obssuite_setpreviewsceneaction.jar
mv target/obssuite_setpreviewsceneaction-*.jar ../../$FOLD/obssuite_setpreviewsceneaction.jar
cd ../setrecording && mvn clean -Dmaven.test.skip package
cd ../setrecording && mvn clean -Dmaven.test.skip package
mv target/obssuite_setrecordingaction-*.jar ../../$FOLD/obssuite_setrecordingaction.jar
mv target/obssuite_setrecordingaction-*.jar ../../$FOLD/obssuite_setrecordingaction.jar
cd ../setreplaybuffer && mvn clean -Dmaven.test.skip package
cd ../setreplaybuffer && mvn clean -Dmaven.test.skip package
mv target/obssuite_setreplaybufferaction-*.jar ../../$FOLD/obssuite_setreplaybufferaction.jar
mv target/obssuite_setreplaybufferaction-*.jar ../../$FOLD/obssuite_setreplaybufferaction.jar
cd ../setstreaming && mvn clean -Dmaven.test.skip package
cd ../setstreaming && mvn clean -Dmaven.test.skip package
mv target/obssuite_setstreamingaction-*.jar ../../$FOLD/obssuite_setstreamingaction.jar
mv target/obssuite_setstreamingaction-*.jar ../../$FOLD/obssuite_setstreamingaction.jar
cd ../setstudiomode && mvn clean -Dmaven.test.skip package
cd ../setstudiomode && mvn clean -Dmaven.test.skip package
mv target/obssuite_setstudiomodeaction-*.jar ../../$FOLD/obssuite_setstudiomodeaction.jar
mv target/obssuite_setstudiomodeaction-*.jar ../../$FOLD/obssuite_setstudiomodeaction.jar
cd ../setvolume && mvn clean -Dmaven.test.skip package
cd ../setvolume && mvn clean -Dmaven.test.skip package
mv target/obssuite_setvolumeaction-*.jar ../../$FOLD/obssuite_setvolumeaction.jar
mv target/obssuite_setvolumeaction-*.jar ../../$FOLD/obssuite_setvolumeaction.jar
popd || exit
popd || exit
}
}
playaudioclip() {
playaudioclip() {
pushd . || exit
pushd . || exit
cd playaudioclipaction && mvn clean -Dmaven.test.skip package
cd playaudioclipaction && mvn clean -Dmaven.test.skip package
mv target/playaudioclipaction-*.jar ../$FOLD/playaudioclipaction.jar
mv target/playaudioclipaction-*.jar ../$FOLD/playaudioclipaction.jar
popd || exit
popd || exit
}
}
runcommand() {
runcommand() {
pushd . || exit
pushd . || exit
cd runcommandaction && mvn clean -Dmaven.test.skip package
cd runcommandaction && mvn clean -Dmaven.test.skip package
mv target/runcommandaction-*.jar ../$FOLD/runcommandaction.jar
mv target/runcommandaction-*.jar ../$FOLD/runcommandaction.jar
popd || exit
popd || exit
}
}
textblock() {
textblock() {
pushd . || exit
pushd . || exit
cd textblockaction && mvn clean -Dmaven.test.skip package
cd textblockaction && mvn clean -Dmaven.test.skip package
mv target/textblockaction-*.jar ../$FOLD/textblockaction.jar
mv target/textblockaction-*.jar ../$FOLD/textblockaction.jar
popd || exit
popd || exit
}
}
twitter() {
twitter() {
pushd . || exit
pushd . || exit
cd twitteraction && mvn clean -Dmaven.test.skip package
cd twitteraction && mvn clean -Dmaven.test.skip package
mv target/twitteraction-*.jar ../$FOLD/twitteraction.jar
mv target/twitteraction-*.jar ../$FOLD/twitteraction.jar
popd || exit
popd || exit
}
}
twitchchat() {
twitchchat() {
pushd . || exit
pushd . || exit
cd twitch/twitch-chat-connect && mvn clean install -Dmaven.test.skip package
cd twitch/twitch-chat-connect && mvn clean install -Dmaven.test.skip package
mv target/twitch-chat-connect-*.jar ../../$FOLD/twitch-chat-connect.jar
mv target/twitch-chat-connect-*.jar ../../$FOLD/twitch-chat-connect.jar
cd ../send-channel-msg && mvn clean -Dmaven.test.skip package
cd ../send-channel-msg && mvn clean -Dmaven.test.skip package
mv target/twitch-send-channel-msg-*.jar ../../$FOLD/twitch-send-channel-msg.jar
mv target/twitch-send-channel-msg-*.jar ../../$FOLD/twitch-send-channel-msg.jar
cd ../clear-chat && mvn clean -Dmaven.test.skip package
cd ../clear-chat && mvn clean -Dmaven.test.skip package
mv target/twitch-clear-chat-*.jar ../../$FOLD/twitch-clear-chat.jar
mv target/twitch-clear-chat-*.jar ../../$FOLD/twitch-clear-chat.jar
cd ../set-color && mvn clean -Dmaven.test.skip package
cd ../set-color && mvn clean -Dmaven.test.skip package
mv target/twitch-set-color-*.jar ../../$FOLD/twitch-set-color.jar
mv target/twitch-set-color-*.jar ../../$FOLD/twitch-set-color.jar
cd ../whisper && mvn clean -Dmaven.test.skip package
cd ../whisper && mvn clean -Dmaven.test.skip package
mv target/twitch-whisper-*.jar ../../$FOLD/twitch-whisper.jar
mv target/twitch-whisper-*.jar ../../$FOLD/twitch-whisper.jar
cd ../unraid && mvn clean -Dmaven.test.skip package
cd ../unraid && mvn clean -Dmaven.test.skip package
mv target/twitch-unraid-*.jar ../../$FOLD/twitch-unraid.jar
mv target/twitch-unraid-*.jar ../../$FOLD/twitch-unraid.jar
cd ../unhost && mvn clean -Dmaven.test.skip package
cd ../unhost && mvn clean -Dmaven.test.skip package
mv target/twitch-unhost-*.jar ../../$FOLD/twitch-unhost.jar
mv target/twitch-unhost-*.jar ../../$FOLD/twitch-unhost.jar
cd ../add-stream-marker && mvn clean -Dmaven.test.skip package
cd ../add-stream-marker && mvn clean -Dmaven.test.skip package
mv target/twitch-add-stream-marker-*.jar ../../$FOLD/twitch-add-stream-marker.jar
mv target/twitch-add-stream-marker-*.jar ../../$FOLD/twitch-add-stream-marker.jar
cd ../host-channel && mvn clean -Dmaven.test.skip package
cd ../host-channel && mvn clean -Dmaven.test.skip package
mv target/twitch-host-channel-*.jar ../../$FOLD/twitch-host-channel.jar
mv target/twitch-host-channel-*.jar ../../$FOLD/twitch-host-channel.jar
cd ../raid-channel && mvn clean -Dmaven.test.skip package
cd ../raid-channel && mvn clean -Dmaven.test.skip package
mv target/twitch-raid-channel-*.jar ../../$FOLD/twitch-raid-channel.jar
mv target/twitch-raid-channel-*.jar ../../$FOLD/twitch-raid-channel.jar
cd ../start-commercial && mvn clean -Dmaven.test.skip package
cd ../start-commercial && mvn clean -Dmaven.test.skip package
mv target/twitch-start-commercial-*.jar ../../$FOLD/twitch-start-commercial.jar
mv target/twitch-start-commercial-*.jar ../../$FOLD/twitch-start-commercial.jar
cd ../subs-only && mvn clean -Dmaven.test.skip package
mv target/twitch-subs-only-*.jar ../../$FOLD/twitch-subs-only.jar
popd || exit
popd || exit
}
}
website() {
website() {
pushd . || exit
pushd . || exit
cd websiteaction && mvn clean -Dmaven.test.skip package
cd websiteaction && mvn clean -Dmaven.test.skip package
mv target/websiteaction-*.jar ../$FOLD/websiteaction.jar
mv target/websiteaction-*.jar ../$FOLD/websiteaction.jar
popd || exit
popd || exit
}
}
mkdir -p $FOLD
mkdir -p $FOLD
rm -rf "${FOLD:?}/"*
rm -rf "${FOLD:?}/"*
cp $DEPS/* $FOLD/
cp $DEPS/* $FOLD/
case "$1" in
case "$1" in
hotkey)
hotkey)
hotkey
hotkey
;;
;;
mediakey)
mediakey)
mediakey
mediakey
;;
;;
playaudioclip)
playaudioclip)
playaudioclip
playaudioclip
;;
;;
runcommand)
runcommand)
runcommand
runcommand
;;
;;
textblock)
textblock)
textblock
textblock
;;
;;
twitter)
twitter)
twitter
twitter
;;
;;
website)
website)
website
website
;;
;;
obssuite)
obssuite)
obssuite
obssuite
;;
;;
twitchchat)
twitchchat)
twitchchat
twitchchat
;;
;;
*)
*)
# build all actions as default
# build all actions as default
hotkey
hotkey
mediakey
mediakey
obssuite
obssuite
playaudioclip
playaudioclip
runcommand
runcommand
textblock
textblock
twitter
twitter
twitchchat
twitchchat
website
website
;;
;;
esac
esac
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stream-pi</groupId>
<artifactId>twitch-subs-only</artifactId>
<version>1.0.0</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<streamPiActionApiVersion>1.0.0-SNAPSHOT</streamPiActionApiVersion>
<streamPiUtilVersion>1.0.0-SNAPSHOT</streamPiUtilVersion>
<streamPiTwitchChatConnectVersion>1.0.0</streamPiTwitchChatConnectVersion>
<javaTwirkVersion>0.6.3</javaTwirkVersion>
</properties>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>test-jar</id>
<phase>package</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.stream-pi</groupId>
<artifactId>util</artifactId>
<version>${streamPiUtilVersion}</version>
</dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<artifactId>action-api</artifactId>
<version>${streamPiActionApiVersion}</version>
</dependency>
<dependency>
<groupId>com.github.gikkman</groupId>
<artifactId>Java-Twirk</artifactId>
<version>${javaTwirkVersion}</version>
</dependency>
<dependency>
<groupId>com.stream-pi</groupId>
<artifactId>twitch-chat-connect</artifactId>
<version>${streamPiTwitchChatConnectVersion}</version>
</dependency>
</dependencies>
</project>
module com.stream_pi.twitch.subsonlyaction {
requires com.stream_pi.util;
requires com.stream_pi.action_api;
requires com.stream_pi.twitchchatconnectaction;
requires Java.Twirk;
provides com.stream_pi.action_api.externalplugin.ExternalPlugin with subs_only.SubsOnlyAction;
}
package subs_only;
import com.gikk.twirk.Twirk;
import com.gikk.twirk.TwirkBuilder;
import com.gikk.twirk.events.TwirkListener;
import com.gikk.twirk.types.roomstate.Roomstate;
import com.stream_pi.action_api.actionproperty.property.Property;
import com.stream_pi.action_api.actionproperty.property.Type;
import com.stream_pi.action_api.externalplugin.ToggleAction;
import com.stream_pi.util.exception.MinorException;
import com.stream_pi.util.exception.StreamPiException;
import com.stream_pi.util.version.Version;
import connect.chat.TwitchChatCredentials;
public class SubsOnlyAction extends ToggleAction
{
private final String channelNameKey = "channel_name_so";
private Twirk twirk;
public SubsOnlyAction()
{
setName("Toggle Subs-Only Chat");
setCategory("Twitch Chat");
setVisibilityInServerSettingsPane(false);
setAuthor("j4ckofalltrades");
setVersion(new Version(1, 0, 0));
setHelpLink("https://github.com/stream-pi/essentialactions#twitch-chat-integration");
}
@Override
public void initProperties() throws MinorException
{
Property channelName = new Property(channelNameKey, Type.STRING);
channelName.setDisplayName("Channel Name");
channelName.setDefaultValueStr("channel_name");
channelName.setCanBeBlank(false);
addClientProperties(channelName);
}
@Override
public void onToggleOn() throws Exception
{
try
{
connectToChannel();
twirk.channelMessage("/subscribers");
} catch (Exception ex)
{
setCurrentStatus(false);
throw new StreamPiException("Failed to enable subscribers only mode.", "Please try again.");
}
}
@Override
public void onToggleOff() throws Exception
{
try
{
connectToChannel();
twirk.channelMessage("/subscribersoff");
} catch (Exception ex)
{
setCurrentStatus(true);
throw new StreamPiException("Failed to disable subscribers only mode.", "Please try again.");
}
}
private void connectToChannel() throws Exception
{
if (twirk != null)
{
if (!twirk.isConnected())
{
twirk.connect();
}
return;
}
final TwitchChatCredentials.ChatCredentials credentials = TwitchChatCredentials.getCredentials();
credentials.ensureCredentialsInitialized();
final String channel = getClientProperties().getSingleProperty(channelNameKey).getStringValue();
try
{
twirk = new TwirkBuilder(channel, credentials.getNickname(), credentials.getOauthToken()).build();
twirk.addIrcListener(new TwirkListener()
{
@Override
public void onRoomstate(Roomstate roomstate)
{
try
{
setCurrentStatus(roomstate.getSubMode() == 1);
} catch (MinorException e)
{
throw new RuntimeException(e);
}
}
});
twirk.connect();
} catch (Exception ex)
{
throw new StreamPiException("Failed to connect to Twitch",
String.format("Could not connect to '%s' channel.", channel));
}
}
@Override
public void onShutDown() throws Exception
{
if (twirk != null)
{
try
{
twirk.disconnect();
} catch (Exception ex)
{
throw new StreamPiException("Twitch connection error", "Please try again.");
}
}
}
}