multibot's People
Forkers
minuskubemultibot's Issues
Create database and/or tables if they doesn't exists
If database does not exists, then create it automatically.
If a table is missing, propose to user to create the missing table or to remove database and to recreate it.
Fix the JDA EventListener bug when uploading image with empty text
Notes
The JDA EventListener error is triggered by uploading images...
N.B. : This error is triggered when the image is uploaded alone, when it's uploaded with text, it doesn't trigger the error.
Conclusion : This seems to be linked to the fact that somewhere the text is empty, so it's null in the code. Needs to investigate.
Dump
[JDA MainWS-ReadThread] ERROR net.dv8tion.jda.core.JDA - One of the EventListeners had an uncaught exception
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at fr.gravendev.multibot.commands.CommandManager.executeCommand(CommandManager.java:63)
at fr.gravendev.multibot.commands.MessageReceivedListener.executeListener(MessageReceivedListener.java:29)
at fr.gravendev.multibot.commands.MessageReceivedListener.executeListener(MessageReceivedListener.java:8)
at fr.gravendev.multibot.events.MultiBotListener.lambda$onEvent$1(MultiBotListener.java:41)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at fr.gravendev.multibot.events.MultiBotListener.onEvent(MultiBotListener.java:41)
at net.dv8tion.jda.core.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:84)
at net.dv8tion.jda.core.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:127)
at net.dv8tion.jda.core.handle.SocketHandler.handle(SocketHandler.java:37)
at net.dv8tion.jda.core.requests.WebSocketClient.onDispatch(WebSocketClient.java:868)
at net.dv8tion.jda.core.requests.WebSocketClient.onEvent(WebSocketClient.java:766)
at net.dv8tion.jda.core.requests.WebSocketClient.handleEvent(WebSocketClient.java:745)
at net.dv8tion.jda.core.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:903)
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:368)
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:270)
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:990)
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:749)
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
Some log dump...
[JDA MainWS-ReadThread] ERROR net.dv8tion.jda.core.JDA - One of the EventListeners had an uncaught exception
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at fr.gravendev.multibot.commands.CommandManager.executeCommand(CommandManager.java:63)
at fr.gravendev.multibot.commands.MessageReceivedListener.executeListener(MessageReceivedListener.java:29)
at fr.gravendev.multibot.commands.MessageReceivedListener.executeListener(MessageReceivedListener.java:8)
at fr.gravendev.multibot.events.MultiBotListener.lambda$onEvent$1(MultiBotListener.java:41)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at fr.gravendev.multibot.events.MultiBotListener.onEvent(MultiBotListener.java:41)
at net.dv8tion.jda.core.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:84)
at net.dv8tion.jda.core.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:127)
at net.dv8tion.jda.core.handle.SocketHandler.handle(SocketHandler.java:37)
at net.dv8tion.jda.core.requests.WebSocketClient.onDispatch(WebSocketClient.java:868)
at net.dv8tion.jda.core.requests.WebSocketClient.onEvent(WebSocketClient.java:766)
at net.dv8tion.jda.core.requests.WebSocketClient.handleEvent(WebSocketClient.java:745)
at net.dv8tion.jda.core.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:903)
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:368)
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:270)
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:990)
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:749)
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
[JDA MainWS-ReadThread] ERROR net.dv8tion.jda.core.JDA - One of the EventListeners had an uncaught exception
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at fr.gravendev.multibot.commands.CommandManager.executeCommand(CommandManager.java:63)
at fr.gravendev.multibot.commands.MessageReceivedListener.executeListener(MessageReceivedListener.java:29)
at fr.gravendev.multibot.commands.MessageReceivedListener.executeListener(MessageReceivedListener.java:8)
at fr.gravendev.multibot.events.MultiBotListener.lambda$onEvent$1(MultiBotListener.java:41)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at fr.gravendev.multibot.events.MultiBotListener.onEvent(MultiBotListener.java:41)
at net.dv8tion.jda.core.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:84)
at net.dv8tion.jda.core.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:127)
at net.dv8tion.jda.core.handle.SocketHandler.handle(SocketHandler.java:37)
at net.dv8tion.jda.core.requests.WebSocketClient.onDispatch(WebSocketClient.java:868)
at net.dv8tion.jda.core.requests.WebSocketClient.onEvent(WebSocketClient.java:766)
at net.dv8tion.jda.core.requests.WebSocketClient.handleEvent(WebSocketClient.java:745)
at net.dv8tion.jda.core.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:903)
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:368)
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:270)
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:990)
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:749)
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'content' at row 1
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:955)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1094)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1042)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1345)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1027)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
at fr.gravendev.multibot.database.dao.LogsDAO.save(LogsDAO.java:23)
at fr.gravendev.multibot.database.dao.LogsDAO.save(LogsDAO.java:8)
at fr.gravendev.multibot.database.dao.DAO.save(DAO.java:18)
at fr.gravendev.multibot.logs.MessageReceivedListener.executeListener(MessageReceivedListener.java:40)
at fr.gravendev.multibot.logs.MessageReceivedListener.executeListener(MessageReceivedListener.java:16)
at fr.gravendev.multibot.events.MultiBotListener.lambda$onEvent$1(MultiBotListener.java:41)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.util.stream.ReferencePipeline.forEach(Unknown Source)
at fr.gravendev.multibot.events.MultiBotListener.onEvent(MultiBotListener.java:41)
at net.dv8tion.jda.core.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:84)
at net.dv8tion.jda.core.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:127)
at net.dv8tion.jda.core.handle.SocketHandler.handle(SocketHandler.java:37)
at net.dv8tion.jda.core.requests.WebSocketClient.onDispatch(WebSocketClient.java:868)
at net.dv8tion.jda.core.requests.WebSocketClient.onEvent(WebSocketClient.java:766)
at net.dv8tion.jda.core.requests.WebSocketClient.handleEvent(WebSocketClient.java:745)
at net.dv8tion.jda.core.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:903)
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:368)
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:270)
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:990)
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:749)
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
5min avant d'utiliser &aide
Il faudrait faire en sorte que l'on puisse utiliser la commande &aide uniquement si l'on a poster un message dans les précédentes 5 minutes.
Make authorization channels system use config file
i.e. commands in roles/commands/
It'll be better to put authorizations in the config file instead of hardcoding this...
test
When creating a command, emoji scream is not correctly saved
Save the anti roles of people when they left server
The purpose will be to save "anti" roles for bad people and to give us back when they join again.
Write Readme with installation steps
Experience
Description : Le module d'experience introduit un classement entre les membres en fonction de l'xp ajouté grâce aux message envoyés.
- Créer une commande rank qui va afficher au membre son classement, son niveau, sa progression dans son niveau ainsi que l'xp demandé pour passer au supérieur.
- Créer une commande levels qui va envoyer un lien redirigeant vers le classement sur le site du bot.
- Créer une table experience avec comme colonne:
- id
- user (Contient l'id du membre)
- xp (Contient son avancement dans son niveau)
- lvl (Contient son niveau)
- msg (Contient son nombre de messages)
- lastMessage (Contient la date à laquelle le membre a envoyé son dernier message)
test
Make anti roles duration configurable instead of being hardcoded
Make the bot able to warn for bad word usage
We must add a word blacklisting feature
Add user id support along with user ping
Just having user ping support is not enough, for example when the user is difficult to ping because he's got a bad username (some unicode chars in it, etc.) or when the user has left the server.
Seperate secrets and configuration
If not already done, I think it'll be a good idea to seperate secrets (put it in a .env or something like that, then put it into the .gitignore) and the configuration, so the current settings could be committed and be shared to the public if it goes open source.
Logs
Description : Le module de logs permet d'afficher dans un salon toutes les mentions de rôles, modifications de messages et les suppressions de message
- Enregistrer les notifications de rôles.
- Enregistrer les modifications de messages.
- Enregistrer les suppressions de message:
Send messages to members when their sanctions expire
##Task list
Send DM to members when they :
- lost an anti role
- are unmute
- are unban (?)
DM must contains things like type, date, duration of the sanction (if it has one), etc.
Add confirmation message for the ping command (&aide)
The bot should send a confirmation message (with a small reminder of the rules) before mentioning the role when using the ping command (&aide
) in order to avoid accidental uses of the command.
Quizz
Description : Le module de quizz instaure un formulaire pour demander le rôle Membre et avoir accès à tout les salons du discord.
- Envoyer un message dans un salon où l'utilisateur pourra ajouter une réaction.
- Poser les questions à l'utilisateur en message privé.
- Envoyer les réponses dans un salon.
- Créer une commande quizz pour:
- Envoyer le message avec les réactions dans un salon
- Pouvoir modifier ce salon
- Pouvoir modifier les questions du formulaire
- Pouvoir modifier le salon où sont envoyés les candidatures
- Pouvoir accepté ou refusé les candidatures
Make the bot a music player
The bot must be able to play sound from :
- YouTube
- SoundCloud (?)
Make the bot able to ban by id
It's important to make the bot able to ban people by id even if they're not on the server.
It can be useful when people insults and left etc.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.