p0slx / atrium Goto Github PK
View Code? Open in Web Editor NEWBot Discord multitâche basé sur Discord.JS
Bot Discord multitâche basé sur Discord.JS
La commande peut être très vaste, mais ça pourrait être utile de pouvoir faire un /convert avec un lien de message (ou lien de fichier) et de le convertir dans un autre format selon une liste prédéfinie.
Pour les vidéos/GIF, je pense que l'utilisation de ffmpeg sera la meilleure solution sachant qu'il est déjà présent dans le bot.
Peut-être avoir une option pour le nombre de FPS, nombre de couleurs et la compression appliqué
Dans de rare cas, yt-dlp ne retourne pas un JSON valide / pas avec toutes les infos et fait donc crash le programme.
Il faudrait donc trouver un moyen de check si tout les champs sont bien valide car un .toString()
est effectué avant envoie de l'embed.
Si il manque des champs alors on refait appel à yt-dlp avec le même lien, si il manque ENCORE des champs alors on répond au message avec un message d'erreur et on log une exception
Implémentation de la commande /mute avec un timeout (optionnel) et un pseudo en paramètre.
Format :
/mute <user> [timeout]
Je n'ai malheureusement pas de lien Reddit pour fix ce bug mais ça arrive parfois sur certains posts.
Tracking issue for:
DeprecationWarning: MessageEmbed#addField is deprecated and will be removed in the next major update. Use MessageEmbed#addFields instead.
Grâce à la commande /profileadd
il est possible d'ajouter une personne à la BDD des personnes à fetch lors de la commande /ladder
, or on ne peut mettre qu'une quantité limité de champs dans un embed.
Il faudrait faire un système de pagination s'il y a beaucoup de personnes dedans.
Discord.JS supporte maintenant les bouttons
Idéalement il faudrait faire un bouton suivant/précédent en dessous de l'embed et le modifier (si possible) après appuis sur un des boutons.
Le discord de r/jailbreak a parfois des choses comme ça, donc il faudrait essayer de voir comment ils ont fait.
Ce système pourrait être utilisé aussi pour autre chose donc c'est pas du temps de perdu.
Il est souvent arrivé que le bot crash suite à une exception qui n'a pas été catch.
Il y a déjà un fichier .service
dans le repo mais pour l'instant il ne marche pas (crash lors du systemctl start
)
Il faudrait prendre le temps de le déployer et de faire un système de log pour écrire l'exception dans un fichier avec le lien qui est en cause (car 100% des crash sont dû à yt-dlp
pour l'instant suite à un mauvais retour d'API)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: node:events:491
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: throw er; // Unhandled 'error' event
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: ^
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: TypeError: Cannot read properties of undefined (reading 'serialize')
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at Object.execute (/home/p0slx/Atrium/events/messageDelete.js:15:12)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at Client.<anonymous> (/home/p0slx/Atrium/index.js:39:50)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at Client.emit (node:events:513:28)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at MessageDeleteAction.handle (/home/p0slx/Atrium/node_modules/discord.js/src/client/actions/MessageDelete.js:24:16)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at module.exports [as MESSAGE_DELETE] (/home/p0slx/Atrium/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_DELETE.js:4:32)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at WebSocketManager.handlePacket (/home/p0slx/Atrium/node_modules/discord.js/src/client/websocket/WebSocketManager.js:352:31)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at WebSocketShard.onPacket (/home/p0slx/Atrium/node_modules/discord.js/src/client/websocket/WebSocketShard.js:489:22)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at WebSocketShard.onMessage (/home/p0slx/Atrium/node_modules/discord.js/src/client/websocket/WebSocketShard.js:328:10)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at callListener (/home/p0slx/Atrium/node_modules/ws/lib/event-target.js:290:14)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at WebSocket.onMessage (/home/p0slx/Atrium/node_modules/ws/lib/event-target.js:209:9)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: Emitted 'error' event on Client instance at:
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at emitUnhandledRejectionOrErr (node:events:394:10)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: at process.processTicksAndRejections (node:internal/process/task_queues:84:21)
Jan 12 10:52:24 ARM-Server start_atrium.sh[3313971]: Node.js v19.2.0
Ça prend beaucoup de place sur l'écran pour rien, car personne les lis, donc autant que ce soit retiré avec un reg ex.
Avec yt-dpl, les gifs sont reconnu comme des vidéos, j'ai pas regardé de plus loin d'où ça venait mais certainement du parsing quand ça check l'extension du fichier pour différencier les images des vidéos.
Ça a pour conséquence d'appeler ffmpeg
sur un gif pour le transformer en MP4 et donc rend le GIF illisible, de plus ça rajoute du temps CPU pour rien.
Mis à part le stack trace lors d'un crash, on a rien pour savoir ce qui a causé un crash de l'app.
Il faudrait trouver un moyen de log toutes les exceptions y compris celle non catch et de dump les variables locales pour faciliter le debug.
J'ai trouvé un logger léger et en async qui pourrait faire l'affaire : pinojs
Au lieu de faire spawn un subprocess pour utiliser ffmpeg, il serait préférable d'utiliser ffmpeg WASM.
Ça rendra le code plus lisible d'une part et ce sera aussi plus simple à utiliser.
Comme certains utilisateurs ne regardent pas le contenu du channel avant de poster quelque chose, il serait bien de pouvoir garder en mémoire les liens envoyés dans la journée quel que soit le channel.
Le bot aurait comme comportement de supprimer le message contenant le lien déjà envoyé dans la journée et d'envoyer un message citant le lien original.
Faire exactement comme avec Twitter, Tiktok et Reddit
Une vidéo de yt-dlp peut fail à s'upload si la vidéo est trop lourde pour la taille max d'upload du serveur.
Je ne sais pas si c'est possible mais le truc bien serait de GET le rang du serveur niveau boost et donc savoir la taille max possible d'upload et choisir entre :
Depuis quelques jours, Reddit et Twitter ne marche plus, certainement un problème de yt-dlp, je n'ai pas check les logs encore, mais je pense que ça vient de là.
Peut-être update le paquet ? Structure du JSON qui a changé ?
Tracking issue for:
Comme les fichiers sont directement téléchargés depuis le serveur, ils sont parfois assez lourds (40-50 Mo) et pour les petites connexions, ça peut être très lent à charger.
Avec le nouveau serveur, il est capable de convertir bien plus rapidement les fichiers que le précédent.
À voir selon le temps que ça met, mais c'est peut-être une solution.
Voir pour réduire la résolution. (pas besoin de FHD pour une vidéo Twitter)
Et appliquer une compression sans trop d'impact sur l'image (ffmpeg crf 28-32 ?) et voir l'impact sur les perfs.
Dans un nouveau channel, il faudrait voir pour publier régulièrement des actualités sur l'informatique en général.
Essayer de voir pour les flux RSS ?
Le forum de Linux Tech Tips a les informations les plus importantes pour ce genre de fonctionnalité.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.