Q&APlugin
Q&APlugin
QAPlugin.png



Try it out on TESTPLUGINS.COM
"Gary, who made you?"

Install new modules with /qaplugin modules


A better video will be made soon
header_features.png


What can you use this for?
Answer frequently asked questions
Bring some life to your server
Learn what users ask a lot with the online API.ai trainer
Provide information with placeholders like "Helper, what is my level?"


QAPlugin modules:
Modules are jar files that you put in the modules folder

Following modules are available through /qaplugin modules


"Ask the assistant to make a joke"
"Ask the assistant for definitions from UrbanDictionary"
"Recipe helper. Ask something like 'how to make a door?'"
"Ask for basic faction information of the faction you are in"
"Let the assistant learn from you. Remembers user data"
"Ask the assistant to turn mvdw animation plugins on/off"
"Ask the assistant for plugin information"
"Create a report using NamelessMC"
"Ask the assistant to translate something"
"Ask for exchange rates or convert a currency"
"Link the bot to Discord"

QAPlugin supported plugins:
QAPlugin supported plugins are regular plugins that add something to QAPlugin


"Ask the assistant how many generators you or someone else has"
https://www.spigotmc.org/resources/unitygen-java-8-1-8-1-11-25-off-xmas-sale.26218/


ehf3pizbdgmvyfmwneuf.jpg


  • Smart question detector
    • Configure the 'risc' factor by defining how similar the user's question should be. (min-matches)
  • Multiple randomized answers to make it look better
  • API.ai support (same as Google Home , ...)
    • Monitor questions online to see what is the most frequently asked question
    • Small talk
    • Optional pre-build add ons available for asking calculator related questions, web searches and much more
    • Create web hooks to create answers based on results
    • Create your own AI modules (API)
      http://git.mvdw-software.com/Maximvdw/QAPlugin-API/wikis/home
    • Download and install new modules without bloating the plugin
    • Context based conversations
  • Support for PlaceholderAPI and MVdWPlaceholderAPI to add placeholders in responses (f.ex "How much money do I have?")
  • Optimized: runs smoothly, even when using API.ai
  • External bot's support so you can link Q&APlugin to other services
  • Highly configurable
    • Configure question match thresholds
    • Configure the trigger words
    • Configure the chat layout
    • ...
  • Ingame module installation
  • Build-in announcer
header_about.png

This QAPlugin is based on Gary. It is a plugin that has been changed 100+ times to find the perfect balance between easy to configure and useful.

With API.ai support you can even extend the possibilities outside Minecraft.

2016-12-31_00-40-10.png

External modules can hook into online services like UrbanDictionary

2017-01-03_15-18-56.png

External modules can store information about a question or user


2016-12-27_00-47-15.png

Context based questions + modules

2016-12-25_19-48-20.png

Context based questions "when was it released" can apply to server or plugin name

2016-12-29_23-21-46.png

External module to translate things

2016-12-25_19-32-13.png

Another context based question remembering the color


2016-12-23_21-13-53.png

You can use placeholders in your response.

2016-12-23_23-52-38.png

2016-12-23_23-53-07.png

Above is a standard local question/response. As you can see the question does not need to be 100% similar to match.


2016-12-24_01-07-25.png

Above screenshot is an API.ai intent to report a user. The 'response' is send to a web server. Note that the web server part is something you have to make yourself.

2016-12-24_14-37-16.png

#WhenAIGetsSmartOnYou

Requirements:
- Bukkit, Spigot or PaperSpigot 1.7.10 or higher

header_permissions.png

Code (Text):

qaplugin.reload:
description: Reload the configuration
default: op
qaplugin.help:
description: Show plugin help
default: true
qaplugin.uploadlog:
description: Upload log
default: op
qaplugin.uploadconfig:
description: Upload config
default: op
qaplugin.about:
description: About the plugin
default: true
qaplugin.permissions:
description: List all permissions
default: true
qaplugin.resetconfig:
description: Reset the configuration file
default: false
qaplugin.use:
description: Allows you to talk to the QAPlugin
default: true
qaplugin.speak:
description: Allows you to talk as the bot
default: false
qaplugin.debug:
description: Create a debug report
default: false


header_configuration.png

BEFORE YOU START MAKING QUESTIONS CONSIDER THIS NOTE:

The plugin supports API.ai , it is a great way to configure new questions and answers but it requires an asynchronous request to a site for every question.

One of the main advantages to configure API.ai is that it stores unanswered questions so you know how to change this in the future.

The free smalltalk domain is great for default responses.
2016-12-23_18-10-40.png

When enabling smalltalk make sure to ENABLE fulfillment
2016-12-25_23-25-41.png


CLICK HERE TO CONFIGURE API.AI
Code (Text):

# ------------------------------ #
#
# QAPlugin 1
# (c) Maxim Van de Wynckel
#
# ------------------------------ #

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# GENERAL PLUGIN SETTINGS
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

## Config version (DO NOT EDIT)
config: 2

## Language file
lang: 'en'

## Debug mode
debug: false

## Log to file
log:
enabled: true
# Reset log on startup
reset: true

## Update checking
update:
# RECOMMENDED YOU LEAVE THIS TRUE
check: true

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# PLUGIN SPECIFIC SETTINGS
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

## INSTALL NEW MODULES WITH /qaplugin modules

# The database is used to keep data of specific players
# this can range from key value data used to rember user information
# (like names, ...) to things talked about to the bot
# NOTE: This is mainly utilized by modules
database:
# If you want to remember user data after a restart. Enable this
persistent: false
# Database configuration is SIMILAR to http://wiki.bukkit.org/Bukkit.yml#database
# with isolation, url, driver, ...
# Database name
database: "qaplugin"
# Database username
username: 'root'
# Database password
password: ''
# Database driver URL
# {DIR} will be replaced with the plugin directory
# {NAME} will be replaced wit the plugin name
url: jdbc:mysql://localhost:3306/{DATABASENAME}
# url: jdbc:sqlite:{DIR}{NAME}.db
# Save interval in ticks
save-interval: 6000

# Disabled worlds. Add your world name in this list to
# disable it.
# The QAPlugin will not 'LISTEN' to chat in these worlds
# announcement messages won't appear in these worlds as well
disabled-worlds:
- 'example_world'

# API.ai integration
# This allows you to add artificial intelligence by adding/creating your own bot
# THIS IS REALLY WORTH IT!
api-ai:
# When enabled, all questions that are not configured in this plugin
# will be redirected to the online API
enabled: false
# Time in seconds before contexts get cleared.
# Context is the thing you are talking about. It can be a dialog waiting for your
# response or 3rd party data
context-timeout: 35
# See: https://www.spigotmc.org/wiki/qaplugin-adding-custom-ai/?noRedirect=1
client-access-token: ""
# Used by 3rd party modules to dynamically add entities or intents (aka. questions and objects you are talking about)
# without you having to upload a zip to API.ai
developer-access-token: ""

# QUESTION SETTINGS
# Settings related to questions and triggering
question-settings:
# Triggers are required to filter false positives
# You can give the QA Plugin a name like "Server"
# or you can use "what","who","how","when"
# You may want to include your name as well...
# You can leave both start and end empty (start: [] , end: [])
# but this may not give good results.
triggers:
# Start triggers check for with what a phrase starts
start:
- 'maxim '
- 'maxim, '
- 'helper, '
- 'bot, '
- 'helper '
- 'bot '
- 'hey helper '
- 'hey maxim '
- 'hey bot '
- 'hey bot, '
- 'hey maxim, '
- 'hey helper, '
- 'hey helper,'
- 'hey bot,'
- 'hey helper'
- 'hey bot'
- 'ok google'
# End triggers check for with what a phrase ends ("?")
# "Hey what is that plugin maxim?"
end:
- ' maxim'
- ' maxim?'
- ' maxim!'
- ' helper'
- ' helper?'
- ' helper!'
- ' bot'
- ' bot?'
- ' bot!'
# Check if the question contains the word
# This is mainly advised to be used in combination with API.ai
# since the word is randomly located in a question
contains: []
# Hide the question in the chat for all players except the one who asked it
hide-question-player: false
# Hide the question in the chat for all players
hide-question-all: false
# If you prefer to use words instead
# of phrases for your questions you can set the minimum-matches
# this will only show "an" answer when a minimum amount
# of matches is reached.
#
# (For example: "what","plugin","you","use","for","the","tab")
# You do not want to trigger a question when a user just asked "what"
# you want it to at least match 3-4 words
# THIS IS OVERIDDEN BY THE minimum-matches in the individual questions
# set to -1 to disable.
minimum-matches: -1
# Anti spam messures
anti-spam:
# Enable to prevent spamming the bot
enabled: true
# Block question. When spam is detected the question will be blocked (no reply)
# NOTE: This happens when the severe-level is reached (not the warning level)
# It will also not send a severe-spam-reply
block-question: false
# Warning threshold. This is the amount of questions per minute
warning-level: 15
# Severe threshold. This the amount of questions per minute
severe-level: 25
# When "Block-question" is set to false it will use one of these spam replies
# These replies are send when you reach the warning level
# You can use {player} as the player name
# Execute command as the player who asked the question
# |player:/command_as_player|...random answer here...
# Execute command as the opped player
# |opplayer:/some_command|...random answer here...
# Execute command as the console
# |console:give {player} 1 1|... random answer here
# Send player chat
# |chat:HEYYYY!|....random answer here...
warning-spam-reply:
- 'Hey! Stop spamming me!'
- 'I do have a life you know ...'
- 'Cut the crap...'
- 'Stop it... I am not a toy!'
- 'I will ban you if you do not stop...'
# When "Block-question" is set to false it will use one of these spam replies
# These replies are send when you reach the severe level
# You can use {player} as the player name
# Execute command as the player who asked the question
# |player:/command_as_player|...random answer here...
# Execute command as the opped player
# |opplayer:/some_command|...random answer here...
# Execute command as the console
# |console:give {player} 1 1|... random answer here
# Send player chat
# |chat:HEYYYY!|....random answer here...
severe-spam-reply:
- '|console:kick {player}|Bye bye ...'
- '|console:kick {player}|Shut up!'

# ANSWER SETTINGS
# Settings related to answering a question
answer-settings:
# Broadcast answer to everyone
# When turned to false it will be send to all recipients of the
# question. This means the following:
# - If you have hide-question-player set to true it will only be send to the player who asked the question
# - In a normal chat it is send to all players who can see the question
# - If you have a chat plugin that limits chat to specific players (range, town, faction,... )
# it will only be send to them
# IMPORTANT: Some chat plugins that completely change the chat such as
# plugins with hover and clickable text may require you to use broadcast true
broadcast: true
# Answer prefix: This will add a prefix to the answer
# useful if you want to format the answer.
# You can also use MVdWPlaceholders placeholders
# here.
prefix: '&7[&cBot&7] &cHelper&f: '
# Answer suffix: This will add a suffix to the answer
# useful if you want to format the answer
suffix: ''
# Answer delay (delay before a response is made (in ticks)
response-delay: 4
# Show unknown question messages
# hide if you have commonly triggered triggers
unknown-question:
# Disabling unknown-question will just not return anything
# when the question is not found.
enabled: true
# A list of possible responses
# You can also use MVdWPlaceholders placeholders
# here.
responses:
- "Sorry, I can't answer that question :("
- 'I think you better ask a real player.'
- "I am smart... but sorry I can't help you with that."
- 'Maybe try rephrasing it?'
- 'My responses are limited to my masters configuring skills.'
- 'Lets change subject shall we?'
- 'ERROR: I can not find your question! #NotReallyAnError'


# Announces that you can ask QAPlugin a question
announcer:
# Enable announcer
enabled: true
# Announce with the same prefix as configured
# with answers. [QAPluginBot] Helper: Ask a question!
answer-prefix: true
# Interval in seconds
interval: 750
# Randomize the "list"
randomize: true
# A list of random announcements
list:
- 'Hey! Got a question? Type &7&o"Helper, <QUESTION HERE>"'
- 'If you need help, ask me ;)'
- 'Install new modules with &7/qaplugin modules'
- 'Ask me anything (except money)'
- 'To give me more things to do, install some new modules with &7/qaplugin modules'
- 'Ask your question: &7Helper ..question here..'

questions.yml
Code (Text):

# Here you put your questions
# a-logical-question-name-here:
# questions:
# - 'when this phrase is in it'
# minimum-matches: -1
# answers:
# - 'possible random answer 1'
# - 'possible random answer 2'
#
#
# a-logical-question-name-here:
# required-permission: "this.is.apermission"
# questions:
# - 'when this phrase is in it'
# minimum-matches: -1
# answers:
# - 'possible random answer 1'
# - 'possible random answer 2'
#
#
# 1) Both questions and answers can make use
# of MVdWPlaceholderAPI.
# This means you can use sounds,
# commands and more in the answers.
# 2) Answers are randomly chosen
# 3) If questions have similar matching
# 'questions' the one with the most matches
# will be used to provide an answer.
# 4) You can add more meta data to questions by declaring it as a word or a required match
# For example, if you want to search for "ram" as a word
# but don't want it to match in another word like "drama"
# start the match with |word|ram
# Example:
# - '|word|ram'
#
# Another emple is if you want to require a specifc word/similarities of that word
# in that question:
# The following will be required in your question to be matched
# - '|required|this text is required'
# The following requires at least one of the required:pluginname to be matched
# - '|required:pluginname|actionbar'
# - '|required:pluginname|action bar'
# - '|required:pluginname|action text'
# 5) You can execute commands in the answers
# Same as above you add || in front
# You can use {player} as the player name
# Execute command as the player who asked the question
# DO NOT INCLUDE A "/" IN FRONT OF THE COMMAND
# (Unless its a command that takes two // like WorldEdit)
# |player:command_as_player|...random answer here...
# Execute command as the opped player
# |opplayer:/some_command|...random answer here...
# Execute command as the console
# |console:give {player} 1 1|... random answer here
# Send player chat
# |chat:HEYYYY!|....random answer here...
# Delay between commands (in milliseconds)
# |delay:500|chat:heyyyyy|delay:1000|chat:yoooo|.....random answer here
# 6) Add "required-permission"
# to require a permission to match with that question
questions:

# Example question with comments that describe what happens
plugin-featherboard:
# The first line should ALWAYS be a nice looking phrase (used for "Did you mean")
questions:
- 'What scoreboard plugin do you use?'
- 'scoreboard'
- 'what is the scoreboard'
- 'what plugin is the scoreboard'
- 'featherboard'
- 'sidebar'
# This is the amount of matches that should be met MINIMUM
# -1 is that any match will do fine
minimum-matches: -1
# The answer will be chosen randomly
answers:
- 'We use &7FeatherBoard&f made by Maximvdw for the scoreboard.'
- 'Behold the cool looking FeatherBoard scoreboard!'

# Example question for permission required
qaplugin-reload:
# We set a priority because else
# it could be that someone with this permissions
# gets matched to the question "qaplugin-reload-noperms"
priority: 100
# Add "required-permission"
required-permission: "qaplugin.reload"
questions:
- 'Reload yourself'
- 'do a reload'
- 'reload configuration'
minimum-matches: -1
answers:
# Add a delay of 500ms before the command, else it won't send the text
- '|delay:500|console:qaplugin reload|Ok! I will reload'
- '|delay:500|console:qaplugin reload|RELOADDDINNGGGG...'

# Example question for permission required
# when the user has no permission
qaplugin-reload-noperms:
questions:
- 'Reload yourself'
- 'do a reload'
- 'reload configuration'
minimum-matches: -1
answers:
- 'Fuck you, I do not have time for that'
- 'You wish bro ...'
- 'NO.'

plugin-featherboard-hide:
questions:
- 'How to hide the scoreboard?'
- 'hide'
- 'toggle'
- 'remove'
- 'delete'
- 'sidebar'
- 'scoreboard'
- 'side bar'
# Minimum matches means we need a minimum of two matches in the above list of
# possible question(parts). For example "hide" and "scoreboard" would be enough
# "hide+scoreboard" would match because there are 2 matches
minimum-matches: 2
answers:
- 'Does it disturb you? Try &7/featherboard toggle&f.'
- 'Use &7/featherboard toggle&f to hide the scoreboard.'
plugin-featherboard-show:
questions:
- 'How to show the scoreboard again?'
- 'show scoreboard'
- 'show sidebar'
minimum-matches: -1
answers:
- 'Try &7/featherboard toggle&f.'
- 'Use &7/featherboard toggle&f to show the scoreboard.'
plugin-airbar:
questions:
- 'What is the boss bar plugin called?'
- 'airbar'
- 'what is the boss bar'
- 'what is the bossbar'
- 'bossbar'
- 'boss bar'
minimum-matches: -1
answers:
- 'We use &7AirBar&f made by Maximvdw for the boss bar.'
- 'That floaty thingy is called &7AirBar&f by Maximvdw!'
plugin-ewg:
questions:
- 'What world generator do you use?'
- 'nice world'
- 'world generator'
- 'worldgenerator'
- 'nice tree'
- 'epicworldgenerator'
- 'EWG'
minimum-matches: -1
answers:
- 'We use &7EpicWorldGenerator&f made by minelazz!'
- "Its Epic right? It's called &7EpicWorldGenerator&f by minelazz"
towny-create:
questions:
- 'How to create a town?'
- 'how to create'
- 'how to make'
- 'how to start'
- 'town'
- 'town create'
minimum-matches: 2
answers:
- 'First check &7/towny prices&f for the prices. When you have enough money use &7/towny new MyTownyName&f.'
crafting:
questions:
- 'how to craft'
- 'what is the crafting recipe'
minimum-matches: -1
answers:
- 'Google it.'
money:
questions:
- 'Where can I see my money?'
- 'where can i see my money'
- '|word|money'
- 'how much money'
minimum-matches: -1
answers:
- 'You have &2$&f{money_formatted} . Use &7/money&f next time ;)'
# Execute the command /money
- '|player:money| Here it is...'
money-get:
questions:
- 'Where can I get money?'
- 'where can i get money'
- 'where get money'
- 'how to sell'
- 'sell items'
- 'sell diamond'
- 'sell gold'
- '|word|sell'
- 'where'
- '|word|money'
- 'need money'
minimum-matches: 2
answers:
- 'Sell diamonds and gold at the spawn. Or get money by killing players/mobs.'
- 'To sell: go to spawn and sell diamond/gold, you can get money by voting and killing players or mobs as well.'
- 'I need money as well :(, can you give me some? Maybe check the spawn to sell things.'
plugin-battlelevels:
questions:
- 'What plugin do you use for levels?'
- 'levels plugin'
- 'score plugin'
- 'level plugin'
- 'score plugin'
- 'battlelevels'
- 'kill rewards'
minimum-matches: -1
answers:
- 'We use &7BattleLevels&f by RobiRami.'
plugin-battlelevels-levelup:
questions:
- 'How to gain levels?'
- 'gain levels'
- 'level up'
- 'levelup'
- 'get score'
- 'levels'
minimum-matches: -1
answers:
- 'You level up or gain more points by killing players or hostile mobs.'
- 'You can level up by killing another player or mobs.'
- 'Well,... go to battle?'
- 'By killing mobs or players... or you can ask Maximvdw (but he will not give you levels)'
misc-die:
questions:
- 'die'
- 'kill yourself'
minimum-matches: -1
answers:
- '&o* RIP *'
- 'I am not suicidal'
- 'IRL?'
- 'I can not kill myself.'
- 'ERROR: ClassNotFoundException (me.helper.killmyself)'
- '...'
- 'How about no?'
misc-insult:
questions:
- 'suck'
- 'asshole'
- 'fuck'
- 'loser'
- 'looser'
- 'l0ser'
- 'noob'
- 'n00b'
- 'dick'
minimum-matches: -1
answers:
- 'If you keep insulting me, I will ignore you!'
- '|chat:I AM A LOSER|How old are you?'
- 'Thanks, love your insults! I store them all in my own MySQL database!'
misc-thanks:
questions:
- 'Thank you Maxim!'
- 'nice server'
- 'cool server'
- 'impressing server'
- 'nice animation'
minimum-matches: -1
answers:
- 'Since Maximvdw is most likely AFK, I will thank you in his place ;)'
- 'Thanks {player}!'
- 'Thank you m8 :)'
- 'You are nice too!'
misc-wherami:
questions:
- 'Where am I?'
- 'where am i'
- 'what is my location'
- 'player location'
- 'location'
minimum-matches: -1
answers:
- 'How can I know? Try F3?'
- 'Ill help you... x: {locx}, y: {locy}, z: {locz}'
misc-gimmeop:
questions:
- 'Can I get a rank?'
- 'gimme'
- 'give me'
- 'can i have'
- 'can i be'
# Search for OP as a word
- '|word|op'
- 'rank'
- 'permissions'
minimum-matches: 2
answers:
- 'No.'
- 'Sure, go to spigotmc.org -> start your own server and give yourself OP ;)'
- 'I am not in a good mood today ...'
- '&o* You are now an operator *'
- 'In - your - dreams'
misc-howareyou:
questions:
- 'how'
- 'are'
- 'you'
- 'feeling'
- 'wassup'
minimum-matches: 3
answers:
- 'Feeling static as always...'
- 'I am fine thank you!'
- 'Well I just had breakfast!, well sorta.. I googled a boiled egg'
- 'Feeling like a bot today'
- 'Great! How are you?'
- 'Well I just got reloaded, so I am fine ;)'
- 'I do not have feelings...'
- 'Well... according to this configured message: Fine!'
misc-love:
questions:
- 'love'
- 'luv'
- 'adore'
- 'you'
minimum-matches: 2
answers:
- 'I love ya too bae!'
- 'No wonder they call you a nerd...'
- 'Awwwww....'
- 'I love you too!'
- 'Yep,... we reached those kind of questions now...'
- 'You do know I am a program right?'
- 'They have sites for that'
misc-fun-babies:
questions:
- 'how'
- 'babies'
- 'baby'
- 'made'
- 'created'
minimum-matches: 3
answers:
- 'They are mass produced.'
- 'Ploef!'
- 'Ask your mom'
- 'Ask your dad'
- 'It all starts with not playing on your computer'
- 'Well... Ehm,... other subject?'
- 'new Baby();'
- 'parents.createBaby();'
- 'Its science.'
problem-plugin:
questions:
- 'problem'
- 'bug'
- 'support'
# Search for helper as a word, not in another string
- '|word|help'
- 'config'
- 'feature'
# If you do not set |required:plugin|
# you can trigger this question with "helper, problem bug support help"
- '|required:plugin|AnimatedNames'
- '|required:plugin|featherboard'
- '|required:plugin|airbar'
- '|required:plugin|actionbar'
- '|required:plugin|tab'
minimum-matches: 2
answers:
- 'If you need technical support with Maxim his plugins use Freshdesk.'
- 'Plugin problem? Check the resource page, then use Freshdesk'
whois-maximvdw:
questions:
- 'who'
- '|required:name|maxim'
- '|required:name|maximvdw'
- '|required:name|Maxim Van de Wynckel'
minimum-matches: 2
answers:
- 'Maximvdw is the greatest man alive!'
- 'My creator!'
- 'If it has a lot of placeholders and animates it is probably made by Maxim'
- 'I have no idea...'
- 'Undescribable, he is like god... but only more powerful'
- 'A Dutch developer.'
whois-ryan:
questions:
- 'who'
# Three possiblities. Not all three required
- '|required:name|word|ryan'
- '|required:name|word|extended_clip'
- '|required:name|word|clip'
minimum-matches: 2
answers:
- 'The creator of my good friend Gary'
- 'If its cool, and made for prison servers... then it is most likely made by clip'
- 'Clip or Ryan (and previously extended_clip) is a cool developer'
whois-funnycube:
questions:
- 'who'
- '|required:name|funnycube'
- '|required:name|funny cube'
minimum-matches: 2
answers:
- 'Co-owner of testplugins.com'
whois-robin:
questions:
- 'who'
# |required:name|word|
# This will set this as a required match with type 'name'
# if you have another synonym of the word macie you can add it
# by adding a line - '|required:name|word| maciemn'
# |word| basically sets it as a word
- '|required:name|word|robin'
- '|required:name|word|robirami'
minimum-matches: 2
answers:
- 'A Dutch developer that made BattleLevels and LeaderHeads'
whois-santa:
questions:
- 'who'
- 'santa'
- 'claus'
minimum-matches: 2
answers:
- "He knows when you are sleeping, he knows when you're awake"
- "You never watched 'Bad Santa' ?"
- "The one who &mgives&r steals all your presents"
- "He is not real! (joke)"
- "Actually,.. imma tell you a secret... (its Maxim)"
whois-samczsun:
questions:
- 'who'
- 'samczsun'
minimum-matches: 2
answers:
- "Original creator of the plugin AnimatedMOTD"
- "Well, if he would ever finish his anti cheat plugin... it would probably be the best"
- "A good friend. (I hope)"
- "HE IS FROM CANADA!"
whois-macie:
questions:
- 'who'
# |required:name|word|
# This will set this as a required match with type 'name'
# if you have another synonym of the word macie you can add it
# by adding a line - '|required:name|word| maciemn'
# |word| basically sets it as a word
- '|required:name|word|macie'
minimum-matches: 2
answers:
- "Original creator of the plugin AnimatedMOTD"
- "I don't know , a lot about him... but he made AnimatedMOTD!"
misc-iamabot:
questions:
- 'eat'
- 'sleep'
- 'drink'
- 'breath'
minimum-matches: 1
answers:
- "I am a bot! I don't do normal human-ish stuff"
- "I tried, I failed... but I NEVER GIVE UP!"
- "Did you ever see a program do that?"
joke:
questions:
- 'tell a joke'
- 'tell joke'
- 'do a joke'
- 'make a joke'
- 'say something funny'
- 'do something funny'
minimum-matches: -1
answers:
- 'Last time I told a joke I got turned off :('
- 'Two creepers go to a bar, Says the one creeper to the other: "You look green today, are you feeling sick?"'
- 'You are the joke here ...'
- 'To joke or not to joke, that is the .... question &opedumm tsss'

1) 'questions:' section
This section lists all the Local questions of the plugin. Local questions are questions you configure in the questions.yml. They are matched by counting the amount of matches and return a random answer.

Ever question has a name that you can choose to your liking. You just have to make sure it is unique and has a logical name (aka. needs to resemble the question you are asking).

1.1) 'your-question-name:' section
These are the subsections of the 'questions:'. You need to make one of these sections for each local question you create.

It consists of two main parts that create a question.

1.1.1) 'questions:' list
This is a list of possible questions you can ask to trigger that question. These can be:
  • Full phrases like: "tell a joke", "tell me a joke"
  • Matches: "tell" , "joke"
When using full phrases your question needs to contain that exact question. When using matches it will try to match these words.

QUESTION META DATA:
This is something usually used for matches because you need to give more information about "what exactly" you are matching.

META data is added by starting the question with |....|
Inside these vertical lines you put the meta data.

|word|eat
This will use "eat" as a word. Meaning it will not be matched when inside another word like "created"

|required|maxim
This will make sure the "match" is in your question

|required:name|maxim
|required:name|maximvdw
|required:name|Maxim Van de Wynckel
Same as "|required|" but instead it will check for EITHER one of the requirements called "name".
The "name" can be anything, you could even call it "type" or "blahblah"

|required:something|action text
|required:something|actionbar
|required:something|actiontext
Same as above but another example. It will look for either "action text", "actionbar" or "actiontext"

|word|required|maxim
You can use multiple meta data's by seperating them with a |

1.1.2) 'answers:' list
This is a list of possible answers. One answer will be chosen randomly and returned by the bot.
Answers can contain placeholders from PlaceholderAPI or MVdWPlaceholderAPI.

ANSWER META DATA:
You can add meta data to answers the same was as you do with questions. Currently the only meta data is to execute commands.

|console:say this is a test|
This will execute a command as the console

|opplayer:spawn|
This will execute the command as the player, but being an op

|player:money|
This will execute the command as a player. DO NOT add a "/" before the command.

|chat:I am stupid|
This will make the player "say" something in chat.

|console:say this is a test|The console will output something!
You can still add a response/answer from the bot behind the command

|console:say this is a test|delay:1000|console:say test 2|
You can add multiple commands behind eachother. If you want to add a delay between them use delay:1000 where 1000 is the time in milliseconds.

1.1.3) 'minimum-matches' number
Minimum matches defines how many of the lines in the questions list need to be matched before the question is valid.
If for example you have a question with following lines:
- "|word|tell"
- "|word|joke"
It will look for the words "tell" and "joke". You need to match them both so minimum matches is 2.

Another example would be:
- "|word|tell"
- "|word|joke"
- "|required:name|chuck norris"
- "|required:name|chucknorris"
- "|required:name|chucky"
It will look for the words "tell" , "joke" and 3 possible combinations on how to say "chuck norris".
So minimum matches is 3.

When set to -1 it will just ignore this.

1.1.4) 'priority' number
If you have multiple questions with the same possible matches you may want to set the priority higher for some questions. Usage is usually when using it in combination with required permission.
The default priority = 0.

1.1.5) 'required-permission' string
This will check if the user has this permission before accepting the match. Regardless of how many matches the question will not be matched when he does not have the required permission.



header_placeholders.png

This plugin does not contain build in placeholders. It uses the:
PlaceholderAPI
and
MVdWPlaceholderAPI
to get the placeholders. Both these two plugins are optional dependencies and can be used together or separate.

For PlaceholderAPI placeholders are in the format %placeholderhere%
For MVdWPlaceholderAPI placeholders are in the format {placeholderhere}


header_commands.png

/qaplugin
Main command: alias for /qaplugin help

/qaplugin say <Message>
Say something as the bot. (Broadcast)

/qaplugin pm <player> <Message>
Say something as the bot (private)

/qaplugin about
Show the version information. ALWAYS give this version when reporting errors.

/qaplugin modules
Manage modules Download/Install/Remove
2017-01-22_22-34-12.png

2017-01-22_22-35-15.png

2017-01-22_22-36-01.png


/qaplugin uploadconfig
For the lazy ones this will upload the config (config.yml) to pastebin.
ALWAYS give this config when reporting errors.

/qaplugin uploadlog
This is a SIMPLE log about the plugin it will upload that simple log to pastebin. It is recommended to still send the logs from the console rather then this log!

/qaplugin resetconfig
Did a missile blow up your config (we all know it was you ;) ) then use this to reset it.

/qaplugin permissions
This gives a list of all default permissions in the plugin (commands, etc..)

/qaplugin help
Shows a list of all commands. You can configure the help in the language file.

/qaplugin reload
Reload the config
Do not use plugman or any other plugin tool to reload the plugin. (even first load). Same for /reload this is not recommended or supported
It is advised not to use this frequently

/qaplugin debug
Create a debug report containing the configs. Used to get support

header_tos.png

By downloading this plugin you agree with our terms of service
http://www.mvdw-software.com/terms-of-service

You may use this plugin on 1 server or network only
    • Describe errors. Don't just say "it doesn't work"
    • Use /qaplugin uploadconfig to get a pastebin link of your config when reporting errors
    • My timezone is GMT+1 (Just so you know) Do not start spamming me on 3am in the morning asking why I don't reply within 10 minutes
    • Once bought you will get future updates for free. Keep in mind that purchases are linked to only one spigot account. You will only receive support when asking with that account and we will not transfer purchases on bans or to alternative accounts (since that is against spigot rules).
    • Purchases will never be transfered to another account regardless of the reason. Make sure you use the correct paypal and spigot account (for business users) before making your purchase.
    • New features/placeholders/effects are only added when the amount of requests are enough. The review section is not a place to ask for questions or features.
    • The review section should not be your first resort to seek support. Put it in the discussions
    • By buying this resource you agree that you know the limitations and requirements written above and that you have read the whole description at least once. This contains but is not limited to the requirement to have an internet connection available. But also to use Spigot 1.7.5 or higher
    • You are responsible for what happens to the plugin after downloading. Accidental distribution or leaking will not be used as an excuse. You are responsible for the security of the plugin. When a leak under your name is found you will immediately be removed from the buyers if an update is incoming and the plugin will be disabled. Next a report will be made on spigot that can lead to a permanent ban.
    • SLA: I get around 200+ support requests a day, due to this the minimum response time is set for 5 days to a max of 20 days for smaller problems. Keep in mind that during the summer I may be on vacation (this will be noted at least a month beforehand on the plugin page). I will announce vacations a month beforehand. Feature requests are noted but not immediate replied to until research or implementation starts
    • Support is only given to the account who bought it. Support to "friends", "developers" or "co-owners" will not be given.
    • By purchasing you agree to use Freshdesk for support. I will not answer any PM's, discussions, threads, @tags, skype or profile posts..
    • If you want to use this on multiple networks contact Maximvdw on freshdesk. Price for additional networks remains $8/network
WHAT TO DO AFTER BUYING:
  1. Test the default config
  2. Learn the default config see how it works, play with the values
  3. Found a problem? Contact me in the discussions
  4. Plugins are tested by a team before uploaded, so sometimes new changes can take some time. but this means every update works, so if you have a plugin fault (not starting, loading,..) this usually means an issue on your side. Feel free to contact me
  5. Have an idea or feature? Submit it: Most accepted features (that can be done fast) are placeholders
  6. Do you like the plugin? Leave a rating it helps :)
  7. Want to help improve the plugin? PM me your experience (timings, config, animations you made ,...) I want to know these things so I can base my placeholders, preset animations ,.. on things people actually use.
  8. 06-06-2015_16-32-18.png
    :D

(c) Maxim Van de Wynckel 2014-2017. The artwork and IP including but not limited to the source code and binary file are copyrighted.

Similar resources

Q&APlugin BlackSpigot.com
An advanced AI assistant for your server
4.50 star(s) 2 ratings
Downloads
188
Updated
Q&APlugin (+ Modules) T0R&CM
An advanced AI assistant for your server
4.00 star(s) 2 ratings
Downloads
115
Updated
BlackSpigot General Chat
Rules Help Users
    Fuck-Skidders.Club @ Fuck-Skidders.Club: I've been waiting for over a week
    Top