Ample Chat Bot
View the documentation
View the source code on Github
Download the latest version on Github
Report issues and request features on Github
Aid in translating this project to your language on Crowdin
What is this plugin?
Ample Chat Bot is a chat robot that responses to key phrases people say in chat. By doing this, it eliminates the need to answer common questions people ask like "can I be op?".
- Localized for English
- Simple Commands
- Database Support:
- Bukkit
- SQLite
- MySQL
- Bukkit
- API for developers
Requirements
- Bukkit
- Some form of permissions
Commands and Permissions
Command | Permission | Description |
---|---|---|
/ample | Displays commands for this plugin | |
/question <question or keyphrase> | ample.edit | Adds a question or keyphrase |
/answer <question id> <answer> | ample.edit | Sets the answer to a question or keyphrase |
/qlist | ample.qlist | lists questions |
/delquestion | ample.delete | Removes a question from the database |
/amplesay <message> | ample.say | Sends a message as the bot |
Additional Permissions
Permission | Description |
---|---|
ample.* | Gives access to all commands |
ample.invoke | Allows a user to invoke responses |
ample.allowabuse | Allows a user to bypass abuse routines |
Message Format
Ample can not only respond with text, but can also execute commands in chat. Ample can also run commands and send private messages to the player. In order to do this, you use one of the following as a prefix to the message
In addition, you can also have ample do combinations of these by separating them with a ";". For example, the response No you shut up - muted lol;cmd:mute %player
will say the first
part in chat, as well as mute the player.
Prefix | Effect |
---|---|
cmd: | Runs a command as console |
pcmd: | Runs a command as the player |
pm: | Send a private message to the player |
This plugin utilizes Plugin Metrics for collecting statistics about this plugin and usage. These stats can be viewed here.
The bukkit implementation of this plugin uses Updater for automatic updating from the project page at dev.bukkit.org
@darthdude92
if you use the cmd: prefix there might be a bug with it. so becareful. we have the ban report on our server and I had the plugin attempt to /warn %player no asking for promos and it warned the wrong person.
@darthdude92
your welcome!
Great plugin, does just what I need it to do: run commands based on phrases!
Thanks!
@jessefjxm
hmm. Interesting that is did not accept the color codes. Sorry! I will add that to the things to do.
well....it seems that the BotName in config file doesn't support color...or there's any thing i did wrong?- - BotName: '&3[&4Tips&3]&f'
@omgitsmit
hmm. I am thinking that it failed to connect do to maybe settings?
Loads just fine (Using MYSQL)
[INFO] [Ample] Enabling Ample v1.2 [INFO] [Ample] Using MySQL db...
I add one question and add an answer to it.
I then type the question verbatim into chat from a user that has the ample.invoke permission and i receive the following error:
[SEVERE] java.sql.SQLException: Before start of result set [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) [SEVERE] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) [SEVERE] at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:841) [SEVERE] at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2672) [SEVERE] at org.jaggy.bukkit.ample.db.MYSQL.currentEpoch(MYSQL.java:175) [SEVERE] at org.jaggy.bukkit.ample.AmpleListener.onChat(AmpleListener.java:58) [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [SEVERE] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [SEVERE] at java.lang.reflect.Method.invoke(Method.java:616) [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459) [SEVERE] at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:786) [SEVERE] at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:764) [SEVERE] at net.minecraft.serverhook.NetServerHandlerProxy.a(NetServerHandlerProxy.java:141) [SEVERE] at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:33) [SEVERE] at net.minecraft.server.NetworkManager.b(NetworkManager.java:229) [SEVERE] at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:113) [SEVERE] at net.minecraft.serverhook.NetServerHandlerProxy.a(NetServerHandlerProxy.java:83) [SEVERE] at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78) [SEVERE] at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:554) [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:452) [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:490)
@matthewl6970
That would be great. Predicting and implementing every variance of a question is pretty impractical.
@rickky2
Oh. :P that problem. I'll see if I can loosen the search code in future releases.
@matthewl6970
No error.I enter "hello" then will show "world".But enter "hello world" is nothing
@rickky2
It should work. Are you getting any errors?
Keyword not working?
@Jaminloh
ok I see a point in a reconnect command. I'll added it ti the todo list.
@Jaminloh
Nope no reload command since the plugin uses databases there is no need for it.
Can you make command to reload the database? maybe /ample reload or /qlist reload
Theres also an error when someone types ' in chat,
[SEVERE] java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (unrecognized token: "' LIMIT 1;") [SEVERE] at org.sqlite.DB.newSQLException(DB.java:383) [SEVERE] at org.sqlite.DB.newSQLException(DB.java:387) [SEVERE] at org.sqlite.DB.throwex(DB.java:374) [SEVERE] at org.sqlite.NativeDB.prepare(Native Method) [SEVERE] at org.sqlite.DB.prepare(DB.java:123) [SEVERE] at org.sqlite.Stmt.executeQuery(Stmt.java:121) [SEVERE] at org.jaggy.bukkit.ample.db.SQLITE.query(SQLITE.java:79) [SEVERE] at org.jaggy.bukkit.ample.AmpleListener.onChat(AmpleListener.java:30) [SEVERE] at sun.reflect.GeneratedMethodAccessor464.invoke(Unknown Source) [SEVERE] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [SEVERE] at java.lang.reflect.Method.invoke(Unknown Source) [SEVERE] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) [SEVERE] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [SEVERE] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459) [SEVERE] at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:786) [SEVERE] at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:764) [SEVERE] at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:33) [SEVERE] at net.minecraft.server.NetworkManager.b(NetworkManager.java:229) [SEVERE] at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:113) [SEVERE] at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:78) [SEVERE] at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:554) [SEVERE] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:452) [SEVERE] at net.minecraft.server.ThreadServerApplication.run(SourceFile:490) [WARNING] [Ample] SQL exception in query(): [SQLITE_ERROR] SQL error or missing database (unrecognized token: "' LIMIT 1;")
@Dracasis
lol! I should have known it was essentials! I cannot live with out it on my servers.
@matthewl6970
Currently I use Essentials which is part of a larger set. But it allows whisper functionality :)
http://dev.bukkit.org/server-mods/essentials/
@TheFluffey
I did attempt to make it look through the message but it caused to much spam that was not even related to the question. As for caps in questions it should not be a issue when it pulls the question from the database. Unless you uncovered glitch in the plugin. I will promote this to a ticket
@Davyhalliday
@Davyhalliday
you can adjust the Anti-abuse settings and restrict access using the -ample.invoke permission to higher ranked users that already know the answers to the questions. In 1.2 I will guarantee expanding the bot include spamming in general
@matthewl6970
Can you make it case-insensitive and also make it so that if that phrase is said in any part of the sentence it triggers a response? It is annoying when someone types: Can I be op and it doesn't trigger because they need a question mark.
Make it so that I could say Can I be op (The defined question) can I be op? hey john can i be op?
Anywhere where the phrase is mentioned triggers it.