mirror of https://github.com/bvn13/JIrcBot.git
calculator listener reworked with FSM, project packaging change from gradle to maven
parent
ec2b27a490
commit
bb0331ed57
|
@ -46,3 +46,4 @@ build/*
|
||||||
google-search.txt
|
google-search.txt
|
||||||
yandex-search.txt
|
yandex-search.txt
|
||||||
|
|
||||||
|
target
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.fasterxml.jackson.core:jackson-core:2.8.10">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.8.10/jackson-core-2.8.10.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.google.api-client:google-api-client:1.23.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.api-client/google-api-client/1.23.0/522ea860eb48dee71dfe2c61a1fd09663539f556/google-api-client-1.23.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.api-client/google-api-client/1.23.0/1da1acc283f4ff3ae0b67bc5ca25b6e387f3afa9/google-api-client-1.23.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.google.apis:google-api-services-customsearch:v1-rev57-1.23.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.apis/google-api-services-customsearch/v1-rev57-1.23.0/48a3bde3ea385a1329123e2392d37cd999deff93/google-api-services-customsearch-v1-rev57-1.23.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.apis/google-api-services-customsearch/v1-rev57-1.23.0/8676c78998bda0c2978c35c0dbf316d60413368/google-api-services-customsearch-v1-rev57-1.23.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.google.code.findbugs:jsr305:1.3.9">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.google.guava:guava-jdk5:17.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava-jdk5/17.0/463f8378feba44df7ba7cd9272d01837dad62b36/guava-jdk5-17.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava-jdk5/17.0/cc6729ce0bc6cc29441cb3a04acad02aeeebb26e/guava-jdk5-17.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.google.http-client:google-http-client:1.23.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.http-client/google-http-client/1.23.0/8e86c84ff3c98eca6423e97780325b299133d858/google-http-client-1.23.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.http-client/google-http-client/1.23.0/fb386c0b92d0adff70acc4a88e5b8b624f26f798/google-http-client-1.23.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.google.http-client:google-http-client-jackson2:1.23.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.http-client/google-http-client-jackson2/1.23.0/fd6761f4046a8cb0455e6fa5f58e12b061e9826e/google-http-client-jackson2-1.23.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.http-client/google-http-client-jackson2/1.23.0/7472d2eeee59d3fbc255acb45ba1a692f61bef61/google-http-client-jackson2-1.23.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: com.google.oauth-client:google-oauth-client:1.23.0">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.oauth-client/google-oauth-client/1.23.0/e57ea1e2220bda5a2bd24ff17860212861f3c5cf/google-oauth-client-1.23.0.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.oauth-client/google-oauth-client/1.23.0/9030ee2be9844eb8c87c851ecf4c05f79b02e023/google-oauth-client-1.23.0-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: org.apache.commons:commons-lang3:3.7">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.7/557edd918fd41f9260963583ebf5a61a43a6b423/commons-lang3-3.7.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.7/e7e36219edde1c66c93495a75490d8f526c377cb/commons-lang3-3.7-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: org.apache.httpcomponents:httpclient:4.5.3">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: org.apache.httpcomponents:httpcore:4.4.8">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.8/70539e2a07865bab38b4153da1ce599cf081790a/httpcore-4.4.8.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.4.8/4b69507bc39c2e0c14798dd91ff4da82ac356f81/httpcore-4.4.8-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: org.jsoup:jsoup:1.10.3">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/jsoup/jsoup/1.10.3/jsoup-1.10.3.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
78
build.gradle
78
build.gradle
|
@ -1,78 +0,0 @@
|
||||||
apply plugin: 'java'
|
|
||||||
apply plugin: 'idea'
|
|
||||||
apply plugin: "org.springframework.boot"
|
|
||||||
|
|
||||||
|
|
||||||
group 'ru.bvn13.jircbot'
|
|
||||||
version '1.0-SNAPSHOT'
|
|
||||||
|
|
||||||
apply plugin: 'java'
|
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
|
||||||
targetCompatibility = 1.8
|
|
||||||
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
jcenter()
|
|
||||||
mavenCentral()
|
|
||||||
|
|
||||||
maven { url 'http://repo.spring.io/libs-release' }
|
|
||||||
maven { url "http://repo.springsource.org/repo" }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bootRun {
|
|
||||||
systemProperties = System.properties
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
configurations {
|
|
||||||
all*.exclude module: 'spring-boot-starter-logging'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
// PircBot: https://github.com/TheLQ/pircbotx/wiki/Documentation
|
|
||||||
compile("org.pircbotx:pircbotx:2.1")
|
|
||||||
|
|
||||||
// Spring
|
|
||||||
compile(group: 'org.springframework.boot', name: 'spring-boot-starter', version:'1.5.8.RELEASE') {
|
|
||||||
exclude(module: 'spring-boot-starter-logging')
|
|
||||||
}
|
|
||||||
compile 'org.springframework.boot:spring-boot-starter-log4j2:1.5.8.RELEASE'
|
|
||||||
|
|
||||||
// lombok
|
|
||||||
compileOnly 'org.projectlombok:lombok:1.16.18'
|
|
||||||
|
|
||||||
// JSON
|
|
||||||
compile 'com.googlecode.json-simple:json-simple:1.1.1'
|
|
||||||
|
|
||||||
// Calculator
|
|
||||||
compile 'net.objecthunter:exp4j:0.4.8'
|
|
||||||
|
|
||||||
// HTML parser
|
|
||||||
compile 'org.jsoup:jsoup:1.10.3'
|
|
||||||
|
|
||||||
// Google API
|
|
||||||
compile 'com.google.apis:google-api-services-customsearch:v1-rev57-1.23.0'
|
|
||||||
|
|
||||||
// Logging
|
|
||||||
compile 'ch.qos.logback:logback-classic:1.2.3'
|
|
||||||
compile 'org.slf4j:slf4j-api:1.7.25'
|
|
||||||
compile 'org.apache.commons:commons-lang3:+'
|
|
||||||
|
|
||||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
url "https://plugins.gradle.org/m2/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath "org.springframework.boot:spring-boot-gradle-plugin:1.5.8.RELEASE"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,172 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
##
|
|
||||||
## Gradle start up script for UN*X
|
|
||||||
##
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
|
||||||
# Resolve links: $0 may be a link
|
|
||||||
PRG="$0"
|
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
|
||||||
ls=`ls -ld "$PRG"`
|
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
|
||||||
PRG="$link"
|
|
||||||
else
|
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >/dev/null
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=`basename "$0"`
|
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS=""
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
||||||
MAX_FD="maximum"
|
|
||||||
|
|
||||||
warn ( ) {
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
die ( ) {
|
|
||||||
echo
|
|
||||||
echo "$*"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
|
||||||
cygwin=false
|
|
||||||
msys=false
|
|
||||||
darwin=false
|
|
||||||
nonstop=false
|
|
||||||
case "`uname`" in
|
|
||||||
CYGWIN* )
|
|
||||||
cygwin=true
|
|
||||||
;;
|
|
||||||
Darwin* )
|
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
NONSTOP* )
|
|
||||||
nonstop=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
|
||||||
else
|
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
|
||||||
fi
|
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
JAVACMD="java"
|
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
|
||||||
if [ $? -eq 0 ] ; then
|
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
ulimit -n $MAX_FD
|
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Darwin, add options to specify how the application appears in the dock
|
|
||||||
if $darwin; then
|
|
||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Cygwin, switch paths to Windows format before running java
|
|
||||||
if $cygwin ; then
|
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
||||||
SEP=""
|
|
||||||
for dir in $ROOTDIRSRAW ; do
|
|
||||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
||||||
SEP="|"
|
|
||||||
done
|
|
||||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
||||||
# Add a user-defined pattern to the cygpath arguments
|
|
||||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
||||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
||||||
fi
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
i=0
|
|
||||||
for arg in "$@" ; do
|
|
||||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
||||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
||||||
else
|
|
||||||
eval `echo args$i`="\"$arg\""
|
|
||||||
fi
|
|
||||||
i=$((i+1))
|
|
||||||
done
|
|
||||||
case $i in
|
|
||||||
(0) set -- ;;
|
|
||||||
(1) set -- "$args0" ;;
|
|
||||||
(2) set -- "$args0" "$args1" ;;
|
|
||||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
|
||||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
||||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
||||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
||||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
||||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
||||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Escape application args
|
|
||||||
save ( ) {
|
|
||||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
|
||||||
echo " "
|
|
||||||
}
|
|
||||||
APP_ARGS=$(save "$@")
|
|
||||||
|
|
||||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
|
||||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
|
||||||
|
|
||||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
|
||||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
|
|
@ -1,84 +0,0 @@
|
||||||
@if "%DEBUG%" == "" @echo off
|
|
||||||
@rem ##########################################################################
|
|
||||||
@rem
|
|
||||||
@rem Gradle startup script for Windows
|
|
||||||
@rem
|
|
||||||
@rem ##########################################################################
|
|
||||||
|
|
||||||
@rem Set local scope for the variables with windows NT shell
|
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
|
||||||
set APP_BASE_NAME=%~n0
|
|
||||||
set APP_HOME=%DIRNAME%
|
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS=
|
|
||||||
|
|
||||||
@rem Find java.exe
|
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windows variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
|
|
||||||
:execute
|
|
||||||
@rem Setup the command line
|
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
|
||||||
|
|
||||||
:end
|
|
||||||
@rem End local scope for the variables with windows NT shell
|
|
||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
|
||||||
|
|
||||||
:fail
|
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
|
||||||
rem the _cmd.exe /c_ return code!
|
|
||||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
|
||||||
exit /b 1
|
|
||||||
|
|
||||||
:mainEnd
|
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
|
||||||
|
|
||||||
:omega
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||||
|
<component name="FacetManager">
|
||||||
|
<facet type="Spring" name="Spring">
|
||||||
|
<configuration />
|
||||||
|
</facet>
|
||||||
|
</component>
|
||||||
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||||
|
<output url="file://$MODULE_DIR$/target/classes" />
|
||||||
|
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="Maven: org.pircbotx:pircbotx:2.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.guava:guava:19.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.9.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.9.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.13.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.13.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.13.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.13.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.5.9.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.9.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.25" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.25" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.13.RELEASE" level="project" />
|
||||||
|
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: net.objecthunter:exp4j:0.4.8" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.jsoup:jsoup:1.11.2" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.apis:google-api-services-customsearch:v1-rev57-1.23.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.api-client:google-api-client:1.23.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.oauth-client:google-oauth-client:1.23.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.http-client:google-http-client:1.23.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.0.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.0.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.http-client:google-http-client-jackson2:1.23.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.1.3" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.guava:guava-jdk5:17.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.7" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: ru.bvn13:fsm:1.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.16" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -0,0 +1,138 @@
|
||||||
|
<?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>ru.bvn13</groupId>
|
||||||
|
<artifactId>jircbot</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
|
<maven.compiler.target>1.8</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>FinalStateMachine-mvn-repo</id>
|
||||||
|
<url>https://raw.github.com/bvn13/FinalStateMachine/mvn-repo/</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>always</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!--pircbotx-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.pircbotx</groupId>
|
||||||
|
<artifactId>pircbotx</artifactId>
|
||||||
|
<version>2.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!--spring-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
<version>1.5.9.RELEASE</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>org.springframework.boot</artifactId>
|
||||||
|
<groupId>spring-boot-starter-logging</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<!--<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-log4j2</artifactId>
|
||||||
|
<version>1.5.9.RELEASE</version>
|
||||||
|
</dependency>-->
|
||||||
|
|
||||||
|
|
||||||
|
<!--json-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.googlecode.json-simple</groupId>
|
||||||
|
<artifactId>json-simple</artifactId>
|
||||||
|
<version>1.1.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--Calculator-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.objecthunter</groupId>
|
||||||
|
<artifactId>exp4j</artifactId>
|
||||||
|
<version>0.4.8</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--HTML parser-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jsoup</groupId>
|
||||||
|
<artifactId>jsoup</artifactId>
|
||||||
|
<version>1.11.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--Google API-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.apis</groupId>
|
||||||
|
<artifactId>google-api-services-customsearch</artifactId>
|
||||||
|
<version>v1-rev57-1.23.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--logging-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<version>1.2.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-core</artifactId>
|
||||||
|
<version>1.2.3</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<version>1.7.25</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>3.7</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!--FSM-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>ru.bvn13</groupId>
|
||||||
|
<artifactId>fsm</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!--lombok-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.16.16</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!--tests-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.12</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
|
@ -1,2 +0,0 @@
|
||||||
rootProject.name = 'jircbot'
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ import org.springframework.stereotype.Component;
|
||||||
import ru.bvn13.jircbot.Services.YandexSearchService;
|
import ru.bvn13.jircbot.Services.YandexSearchService;
|
||||||
import ru.bvn13.jircbot.config.JircBotConfiguration;
|
import ru.bvn13.jircbot.config.JircBotConfiguration;
|
||||||
import ru.bvn13.jircbot.listeners.*;
|
import ru.bvn13.jircbot.listeners.*;
|
||||||
|
import ru.bvn13.jircbot.listeners.calculator.CalculatorListener;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -64,9 +65,9 @@ public class JircBot extends ListenerAdapter {
|
||||||
.addListener(new CalculatorListener()) //This class is a listener, so add it to the bots known listeners
|
.addListener(new CalculatorListener()) //This class is a listener, so add it to the bots known listeners
|
||||||
.addListener(new GoogleDoodleListener(this.config))
|
.addListener(new GoogleDoodleListener(this.config))
|
||||||
//.addListener(new GoogleSearchListener(this.config))
|
//.addListener(new GoogleSearchListener(this.config))
|
||||||
.addListener(new UrlRetrieverListener())
|
//.addListener(new UrlRetrieverListener())
|
||||||
.addListener(new RegexCheckerListener())
|
.addListener(new RegexCheckerListener())
|
||||||
.addListener(new YandexSearchListener(this.config, this.yandexSearchService))
|
//.addListener(new YandexSearchListener(this.config, this.yandexSearchService))
|
||||||
.setServers(servers)
|
.setServers(servers)
|
||||||
.setAutoReconnect(true)
|
.setAutoReconnect(true)
|
||||||
//.addAutoJoinChannel(c.getChannelName()) //Join the official #pircbotx channel
|
//.addAutoJoinChannel(c.getChannelName()) //Join the official #pircbotx channel
|
||||||
|
|
|
@ -9,8 +9,6 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import ru.bvn13.jircbot.listeners.GoogleDoodleListener;
|
|
||||||
import ru.bvn13.jircbot.listeners.YandexSearchListener;
|
|
||||||
import ru.bvn13.jircbot.model.*;
|
import ru.bvn13.jircbot.model.*;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
@ -62,7 +60,7 @@ public class JircBotConfiguration {
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONObject lstnrSettings = (JSONObject) jsonObject.get("settings");
|
JSONObject lstnrSettings = (JSONObject) jsonObject.get("settings");
|
||||||
this.listenersSettings.put(KEY_GOOGLE_DOODLE, this.readGoogleDoodleSettins(lstnrSettings));
|
this.listenersSettings.put(KEY_GOOGLE_DOODLE, this.readGoogleDoodleSettings(lstnrSettings));
|
||||||
this.listenersSettings.put(KEY_GOOGLE_SEARCH, this.readGoogleSearchSettings(lstnrSettings));
|
this.listenersSettings.put(KEY_GOOGLE_SEARCH, this.readGoogleSearchSettings(lstnrSettings));
|
||||||
this.listenersSettings.put(KEY_YANDEX_SEARCH, this.readYandexSearchSettings(lstnrSettings));
|
this.listenersSettings.put(KEY_YANDEX_SEARCH, this.readYandexSearchSettings(lstnrSettings));
|
||||||
|
|
||||||
|
@ -104,7 +102,7 @@ public class JircBotConfiguration {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ListenerSettings readGoogleDoodleSettins(JSONObject data) {
|
private ListenerSettings readGoogleDoodleSettings(JSONObject data) {
|
||||||
GoogleDoodleSettings sets = new GoogleDoodleSettings();
|
GoogleDoodleSettings sets = new GoogleDoodleSettings();
|
||||||
JSONObject googleSets = (JSONObject) data.get("doodle");
|
JSONObject googleSets = (JSONObject) data.get("doodle");
|
||||||
sets.setMainUrl((String) googleSets.get("mainUrl"));
|
sets.setMainUrl((String) googleSets.get("mainUrl"));
|
||||||
|
|
|
@ -1,107 +0,0 @@
|
||||||
package ru.bvn13.jircbot.listeners;
|
|
||||||
|
|
||||||
import net.objecthunter.exp4j.Expression;
|
|
||||||
import net.objecthunter.exp4j.ExpressionBuilder;
|
|
||||||
import org.pircbotx.hooks.ListenerAdapter;
|
|
||||||
import org.pircbotx.hooks.WaitForQueue;
|
|
||||||
import org.pircbotx.hooks.events.MessageEvent;
|
|
||||||
import org.pircbotx.hooks.types.GenericMessageEvent;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class CalculatorListener extends ListenerAdapter {
|
|
||||||
|
|
||||||
private static final String COMMAND = "?calc ";
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onGenericMessage(final GenericMessageEvent event) throws Exception {
|
|
||||||
|
|
||||||
if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!event.getMessage().startsWith(COMMAND.trim())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String message = event.getMessage().replace(COMMAND, "").trim();
|
|
||||||
String[] commands = message.split(" ", 2);
|
|
||||||
|
|
||||||
if (commands.length == 0 || commands[0].isEmpty() || commands[0].trim().equalsIgnoreCase("help")) {
|
|
||||||
event.respond(this.helpMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.checkComand(commands[0].trim())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
String expressionString = message;
|
|
||||||
event.respond("EXPRESSION: "+expressionString);
|
|
||||||
ExpressionBuilder expressionBuilder = new ExpressionBuilder(expressionString);
|
|
||||||
Expression exp = null;
|
|
||||||
|
|
||||||
WaitForQueue queue = new WaitForQueue(event.getBot());
|
|
||||||
while (true) {
|
|
||||||
|
|
||||||
MessageEvent currentEvent = queue.waitFor(MessageEvent.class);
|
|
||||||
|
|
||||||
if (currentEvent.getMessage().startsWith(COMMAND)) {
|
|
||||||
message = currentEvent.getMessage().replace(COMMAND, "").trim();
|
|
||||||
commands = message.split(" ", 2);
|
|
||||||
if (commands.length == 0 || commands[0].isEmpty()) {
|
|
||||||
currentEvent.respond("Command is expected.");
|
|
||||||
currentEvent.respond(this.helpMessage());
|
|
||||||
} else if (commands[0].trim().equalsIgnoreCase("vars")) {
|
|
||||||
exp = expressionBuilder.variables(commands[1].trim()).build();
|
|
||||||
currentEvent.respond("VARIABLES: "+commands[1].trim());
|
|
||||||
} else if (commands[0].trim().equalsIgnoreCase("set")) {
|
|
||||||
String[] variableData = commands[1].trim().split("=", 2);
|
|
||||||
if (variableData.length < 2 || variableData[0].isEmpty() || variableData[1].isEmpty()) {
|
|
||||||
currentEvent.respond("FORMAT: variable = value");
|
|
||||||
} else {
|
|
||||||
if (exp == null) {
|
|
||||||
//currentEvent.respond("Variables are not set!");
|
|
||||||
exp = expressionBuilder.build();
|
|
||||||
} else {
|
|
||||||
Double value = Double.parseDouble(variableData[1].trim());
|
|
||||||
exp = exp.setVariable(variableData[0].trim(), value);
|
|
||||||
currentEvent.respond(String.format("VARIABLE SET: %s = %f", variableData[0].trim(), value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (commands[0].trim().equalsIgnoreCase("done")) {
|
|
||||||
if (exp == null) {
|
|
||||||
exp = expressionBuilder.build();
|
|
||||||
}
|
|
||||||
Double result = exp.evaluate();
|
|
||||||
currentEvent.respond(String.format("%s = %f", expressionString, result));
|
|
||||||
expressionBuilder = null;
|
|
||||||
exp = null;
|
|
||||||
queue.close();
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
currentEvent.respond(this.helpMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Boolean checkComand(String command) {
|
|
||||||
return command.equalsIgnoreCase("vars")
|
|
||||||
|| command.equalsIgnoreCase("set")
|
|
||||||
|| command.equalsIgnoreCase("done");
|
|
||||||
}
|
|
||||||
|
|
||||||
private String helpMessage() {
|
|
||||||
return "CALCULATOR (powered by Exp4J) | "+
|
|
||||||
"Commands: | "+
|
|
||||||
"vars - set variables names delimetered by comma, i.e.: a, b | "+
|
|
||||||
"set - set variable, i.e.: a = 2 | "+
|
|
||||||
"done - evaluate expression";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,224 @@
|
||||||
|
package ru.bvn13.jircbot.listeners.calculator;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import net.objecthunter.exp4j.Expression;
|
||||||
|
import net.objecthunter.exp4j.ExpressionBuilder;
|
||||||
|
import org.pircbotx.hooks.types.GenericMessageEvent;
|
||||||
|
import ru.bvn13.fsm.Condition;
|
||||||
|
import ru.bvn13.fsm.Exceptions.FSMException;
|
||||||
|
import ru.bvn13.fsm.Exceptions.NotInitedException;
|
||||||
|
import ru.bvn13.fsm.FSM;
|
||||||
|
import ru.bvn13.fsm.State;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by bvn13 on 03.01.2018.
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CalculatorDialog extends FSM {
|
||||||
|
|
||||||
|
public static final String COMMAND = "?calc ";
|
||||||
|
|
||||||
|
private String command;
|
||||||
|
private String[] commands;
|
||||||
|
private GenericMessageEvent event;
|
||||||
|
|
||||||
|
private String expression;
|
||||||
|
private ExpressionBuilder expressionBuilder;
|
||||||
|
private Expression exp = null;
|
||||||
|
|
||||||
|
public static CalculatorDialog createDialog() throws FSMException {
|
||||||
|
|
||||||
|
CalculatorDialog dialog = new CalculatorDialog();
|
||||||
|
|
||||||
|
dialog.initState(new State("init") {
|
||||||
|
@Override
|
||||||
|
public void process() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
dialog.expression = dialog.command;
|
||||||
|
dialog.expressionBuilder = new ExpressionBuilder(dialog.expression);
|
||||||
|
dialog.event.respond("inited, expression: "+dialog.expression);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.addTransition("init", new State("entering-vars") {
|
||||||
|
@Override
|
||||||
|
public void beforeEvent() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
dialog.event.respond("please enter variables (comma separated)");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void process() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
dialog.enteringVars();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.addTransition("entering-vars", new State("settings-vars") {
|
||||||
|
@Override
|
||||||
|
public void beforeEvent() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
dialog.event.respond("please set variable");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void process() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
dialog.settingVars();
|
||||||
|
}
|
||||||
|
}, new Condition() {
|
||||||
|
@Override
|
||||||
|
public boolean check() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
return dialog.commands[0].equalsIgnoreCase("vars");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.addTransition("settings-vars", "settings-vars", new Condition() {
|
||||||
|
@Override
|
||||||
|
public boolean check() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
return !dialog.commands[0].equalsIgnoreCase("done");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.addTransition("settings-vars", new State("calculating", true) {
|
||||||
|
@Override
|
||||||
|
public void process() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
dialog.calculating();
|
||||||
|
}
|
||||||
|
}, new Condition() {
|
||||||
|
@Override
|
||||||
|
public boolean check() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
return dialog.commands[0].equalsIgnoreCase("done");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.addTransition("entering-vars", "calculating", new Condition() {
|
||||||
|
@Override
|
||||||
|
public boolean check() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
return dialog.commands[0].equalsIgnoreCase("done");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.addTransition("entering-vars", new State("helping-entering-vars") {
|
||||||
|
@Override
|
||||||
|
public void process() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
dialog.event.respond(dialog.helpMessage());
|
||||||
|
//dialog.event.respond("Please set vars");
|
||||||
|
try {
|
||||||
|
dialog.next();
|
||||||
|
} catch (FSMException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, new Condition() {
|
||||||
|
@Override
|
||||||
|
public boolean check() {
|
||||||
|
CalculatorDialog dialog = ((CalculatorDialog)this.getFSM());
|
||||||
|
return !dialog.commands[0].equalsIgnoreCase("done")
|
||||||
|
&& !dialog.commands[0].equalsIgnoreCase("vars");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.addTransition("helping-entering-vars", "entering-vars");
|
||||||
|
|
||||||
|
return dialog;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void enteringVars() {
|
||||||
|
exp = expressionBuilder.variables(commands[1].trim()).build();
|
||||||
|
event.respond("VARIABLES: "+commands[1].trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void settingVars() {
|
||||||
|
String[] variableData = commands[1].trim().split("=", 2);
|
||||||
|
if (variableData.length < 2 || variableData[0].isEmpty() || variableData[1].isEmpty()) {
|
||||||
|
event.respond("FORMAT: variable = value");
|
||||||
|
} else {
|
||||||
|
if (exp == null) {
|
||||||
|
//currentEvent.respond("Variables are not set!");
|
||||||
|
exp = expressionBuilder.build();
|
||||||
|
} else {
|
||||||
|
Double value = Double.parseDouble(variableData[1].trim());
|
||||||
|
exp = exp.setVariable(variableData[0].trim(), value);
|
||||||
|
event.respond(String.format("VARIABLE SET: %s = %f", variableData[0].trim(), value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void calculating() {
|
||||||
|
if (exp == null) {
|
||||||
|
exp = expressionBuilder.build();
|
||||||
|
}
|
||||||
|
Double result = exp.evaluate();
|
||||||
|
event.respond(String.format("%s = %f", expression, result));
|
||||||
|
expressionBuilder = null;
|
||||||
|
exp = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEvent(GenericMessageEvent event) {
|
||||||
|
this.event = event;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void processCommand(String userMessage) {
|
||||||
|
|
||||||
|
if (prepareCommand(userMessage)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.getCurrentState()==null || this.getCurrentState().isFinish()) {
|
||||||
|
try {
|
||||||
|
this.init();
|
||||||
|
} catch (NotInitedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.next();
|
||||||
|
} catch (FSMException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private boolean prepareCommand(String userMessage) {
|
||||||
|
String message = userMessage.replace(COMMAND, "").trim();
|
||||||
|
this.commands = message.split(" ", 2);
|
||||||
|
|
||||||
|
if (commands.length == 0 || commands[0].isEmpty() || commands[0].trim().equalsIgnoreCase("help")) {
|
||||||
|
event.respond(this.helpMessage());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.checkComand(commands[0].trim())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.command = message;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String helpMessage() {
|
||||||
|
return "CALCULATOR (powered by Exp4J) | "+
|
||||||
|
"Commands: | "+
|
||||||
|
"vars - set variables names delimetered by comma, i.e.: a, b | "+
|
||||||
|
"set - set variable, i.e.: a = 2 | "+
|
||||||
|
"done - evaluate expression";
|
||||||
|
}
|
||||||
|
|
||||||
|
private Boolean checkComand(String command) {
|
||||||
|
return command.equalsIgnoreCase("vars")
|
||||||
|
|| command.equalsIgnoreCase("set")
|
||||||
|
|| command.equalsIgnoreCase("done");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package ru.bvn13.jircbot.listeners.calculator;
|
||||||
|
|
||||||
|
import net.objecthunter.exp4j.Expression;
|
||||||
|
import net.objecthunter.exp4j.ExpressionBuilder;
|
||||||
|
import org.pircbotx.hooks.ListenerAdapter;
|
||||||
|
import org.pircbotx.hooks.WaitForQueue;
|
||||||
|
import org.pircbotx.hooks.events.MessageEvent;
|
||||||
|
import org.pircbotx.hooks.types.GenericMessageEvent;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
||||||
|
public class CalculatorListener extends ListenerAdapter {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Map<UUID, CalculatorDialog> dialogs = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onGenericMessage(final GenericMessageEvent event) throws Exception {
|
||||||
|
|
||||||
|
if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!event.getMessage().startsWith(CalculatorDialog.COMMAND.trim())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CalculatorDialog dialog = null;
|
||||||
|
if (this.dialogs.containsKey(event.getUser().getUserId())) {
|
||||||
|
dialog = this.dialogs.get(event.getUser().getUserId());
|
||||||
|
} else {
|
||||||
|
dialog = CalculatorDialog.createDialog();
|
||||||
|
this.dialogs.put(event.getUser().getUserId(), dialog);
|
||||||
|
}
|
||||||
|
dialog.setEvent(event);
|
||||||
|
dialog.processCommand(event.getMessage());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -11,24 +11,21 @@
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<jmxConfigurator />
|
<jmxConfigurator />
|
||||||
|
|
||||||
|
|
||||||
|
<logger name="ru.bvn13.jircbot" level="ALL"/>
|
||||||
|
<logger name="ru.bvn13.jircbot.listeners" level="ALL"/>
|
||||||
|
<logger name="ru.bvn13.jircbot.listeners.calculator" level="ALL"/>
|
||||||
|
|
||||||
|
<logger name="org.hibernate.SQL" level="WARN"/>
|
||||||
|
<!--<logger name="org.hibernate.type" level="TRACE">-->
|
||||||
|
<!--<appender-ref ref="STDOUT" />-->
|
||||||
|
<!--</logger>-->
|
||||||
|
<logger name="org.springframework" level="DEBUG"/>
|
||||||
|
<logger name="org.pircbotx.PircBotX" level="DEBUG"/>
|
||||||
|
|
||||||
<root level="WARN">
|
<root level="WARN">
|
||||||
<appender-ref ref="STDOUT" />
|
<appender-ref ref="STDOUT" />
|
||||||
</root>
|
</root>
|
||||||
|
|
||||||
<logger name="ru.bvn13.jircbot" level="ALL">
|
|
||||||
<appender-ref ref="STDOUT" />
|
|
||||||
</logger>
|
|
||||||
|
|
||||||
<logger name="org.hibernate.SQL" level="WARN">
|
|
||||||
<appender-ref ref="STDOUT" />
|
|
||||||
</logger>
|
|
||||||
<!--<logger name="org.hibernate.type" level="TRACE">-->
|
|
||||||
<!--<appender-ref ref="STDOUT" />-->
|
|
||||||
<!--</logger>-->
|
|
||||||
<logger name="org.springframework" level="DEBUG">
|
|
||||||
<appender-ref ref="STDOUT" />
|
|
||||||
</logger>
|
|
||||||
<logger name="org.pircbotx.PircBotX" level="DEBUG">
|
|
||||||
<appender-ref ref="STDOUT" />
|
|
||||||
</logger>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
Loading…
Reference in New Issue