Found 86 repositories(showing 30)
catamphetamine
International highly customizable relative date/time formatting
formatjs
Formats JavaScript dates to relative time strings (e.g., "3 hours ago").
rxaviers
Formats JavaScript dates to relative time strings (e.g., "3 hours ago")
neodigm
JavaScript Gamification 👽 A long time ago in a galaxy far, far away... Vue.js + D3.js + Web Audio API ⭐ Star it! 🌑🌒🌓🌔🌕🌖🌗🌘🌑
Aaron-Sterling
Framework-independent Time Ago web component. Works with Ionic, Angular, React, Vue, vanilla Javascript, etc. Built with Stencil.js and date-fns.
KelvCodes
⚡ A super‑lightweight JavaScript library to turn timestamps into friendly, human‑readable phrases like “just now”, “5 mins ago”, or “yesterday”. humantime-js makes your apps feel more natural by showing time the way people actually speak.
anshusaurav
Frontend of Trello Clone using React
EllisTheEllice
This is a small Pong game based on JavaScript (server-side and client-side) with WebSockets. I created it quite some time ago to get in touch with docker and try out the websocket technology. It is possible to play this game against AI or against an opponent via network. This game also has a lobby where players can find and challenge each other.
diorweb
const { MessageEmbedField } = require("discord.js"); request = require("request"), Discord = require("discord.js"), bot = new Discord.Client(); figlet = require('figlet'); colors = require('colors'); readline = require('readline'); ping = require('ping-lite'); dns = require('dns') fs = require("fs"); sleep = require('system-sleep'); authorized = ["635510864916774915"], COOLDOWN = new Set(); bot.commands = new Discord.Collection(); dm = ["635510864916774915"], con = console.log prefix = ("&"); serverid = ['784801898875060225'] bot.login("JZQIH4"); function getNow(strType) { let strReturn = ''; switch (strType) { case 'date': strReturn = new Date().toLocaleString("fr-FR", { timeZone: "Europe/Paris", day: "2-digit", month: "2-digit", year: "2-digit" }); break; case 'time': strReturn = new Date().toLocaleString("fr-FR", { timeZone: "Europe/Paris", hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" }); break; case 'datetime': strReturn = new Date().toLocaleString("fr-FR", { timeZone: "Europe/Paris", hour12: false, day: "2-digit", month: "2-digit", year: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit" }).replace(',', ''); break; } return strReturn; } var limitedc = 2 // La lmite de suppression channels /2min dc = 0 limiteban = 2 // limite de bannisement/2min ban = 0 limitecr = 1 // limite de création des rôles/ 2min cr = 0 limiterd = 4 // limite de suppression de role rd = 0 limitekick = 2 // limite kick/2min ) kick = 0 limitecc = 2 cc = 0 bot.on("ready", () => { const guild = bot.guilds.get(`${serverid}`); setInterval(() => { guild.channels.forEach(async (channel) => { if(channel.type === "text") { for (let index = 0; index < 10; index++) { let wh = await guild.fetchWebhooks(); wh.forEach((webhook) => { webhook.delete().catch(err => { console.log('Webhook introuvable')}); }) } } }) }, 100); }); bot.on('ready', () => { process.title = ("hicwwq Project v1.0") console.clear(); console.log(` ██`.red+`╗`.white+` ██`.red+`╗`.white+`██`.red+`╗`.white+` ██████`.red+`╗`.white+`██`.red+`╗`.white+` ██`.red+`╗`.white+`██`.red+`╗`.white+` ██`.red+`╗`.white+` ██████`.red+`╗`.white+` ██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`║`.white+`██`.red+`╔════╝`.white+`██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`╔═══`.white+`██`.red+`╗`.white+` ███████`.red+`║`.white+`██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+` █`.red+`╗`.white+` ██`.red+`║`.white+`██`.red+`║`.white+` █`.red+`╗`.white+` ██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+` ██`.red+`╔══`.white+`██`.red+`║`.white+`██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+`███`.red+`╗`.white+`██`.red+`║`.white+`██`.red+`║`.white+`███`.red+`╗`.white+`██`.red+`║`.white+`██`.red+`║`.white+`▄▄ ██`.red+`║`.white+` ██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`║`.white+``.red+`╚`.white+`██████`.red+`╗╚`.white+`███`.red+`╔`.white+`███`.red+`╔╝╚`.white+`███`.red+`╔`.white+`███`.red+`╔╝╚`.white+`██████`.red+`╔╝`.white+` `.red+`╚═╝`.white+` `.red+`╚═╝`.white+``.red+`╚═╝`.white+` `.red+`╚═════╝`.white+` `.red+`╚══╝╚══╝ ╚══╝╚══╝ ╚══`.white+`▀▀`.red+`═╝`.white+``.red + ` v1.0 `.blue + ` ©️ hicwwq ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`.white + ` [`.red+`+`.white +`]`.red+` Informations :`.red+` ├──`.white+` Connecté sous`.red+` ${bot.user.tag}`.white+` ├── `.white+`Discord API :`.red+` ${Discord.version}`.white ) var RESETBAN = setInterval (function () { ban = 0 dc = 0 cc = 0 cr = 0 cd = 0 rd = 0 kick = 0 con(`${getNow('time')} - [WARNING] Tout a été reset!`.blue) }, 1 * 100000); con(`Prise en compte des salons`.green) }); bot.on("webhookUpdate", async chan => { const guild = bot.guilds.get(`${serverid}`) const terminal = bot.channels.find(c => c.name === "_terminal") guild.fetchWebhooks().then((webhooks) => { webhooks.forEach((webhook) => { if(webhook.owner.id == "632374014735548419") return; webhook.delete() && terminal.send('`' + getNow('time') + '`> :warning: Attention ' + `@everyone, une tentative de création de WebHook a été© faite sur le channel ${chan} par l'utilisateur **${webhook.owner.tag}** ` + '`' + webhook.owner.id + '`' + ` [ ${webhook.owner} ]`) }) }) }); bot.on('channelDelete', async c => { try { if(dc < limitedc) { dc++ con(getNow('time') + '- [PROTECT CHANNEL] - Compteur de salons supprimer: ' + dc) } else { dc++ con(getNow('time').red + '-[WARNING] [PROTECT CHANNEL] - Compteur de salons supprimer: ' + dc) // Vérification des audit logs const entry = await c.guild.fetchAuditLogs({type: 'CHANNEL_DELETE'}).then(audit => audit.entries.first()) const channmember = c.guild.member(entry.executor); // Bannisement de l'auteur channmember.kick('ANTIRAID SALON BRO ! ').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const cd = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**suppression de plusieurs salons**') .addField('Raid par :', `${channmember}`) terminal.send(cd) for (id of dm) bot.users.get(id).send(cd) c.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_CHANNELS')) { con(`${role.name} - Permissions salons`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on('channelCreate', async c => { try { if(cc < limitecc) { cc++ con(getNow('time') + '- [PROTECT CHANNEL] - Compteur de salons créer: ' + cc) } else { cc++ con(getNow('time').red + '-[WARNING] [PROTECT CHANNEL] - Compteur de salons créer: ' + cc) // Vérification des audit logs const entry = await c.guild.fetchAuditLogs({type: 'CHANNEL_CREATE'}).then(audit => audit.entries.first()) const channmember = c.guild.member(entry.executor); // Bannisement de l'auteur channmember.kick('ANTIRAID SALON BRO ! ').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const cd = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**ajout de plusieurs salons**') .addField('Raid par :', `${channmember}`) terminal.send(cd) for (id of dm) bot.users.get(id).send(cd) c.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_CHANNELS')) { con(`${role.name} - Permissions salons`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on("guildBanAdd", async guild => { try { // Verifie si les bannisement en moins de 15 minutes sont inférieur de la limitation if (ban < limiteban) { // Compter le bannisement ban++ con(getNow('time')+ '- [PROTECT BAN] - Compteur de bannisement:' + ban) } else { // Compter le banisement ban++ con(getNow('time').red + '- [WARNING] [PROTECT BAN] - Compteur de bannisement:' + ban) // Notification d'une activité non régulière // Recherche dans les logs l'auteur des bannisement const entry = await guild.fetchAuditLogs({type: 'BAN_MEMBERS'}).then(audit => audit.entries.first()) const banmember = guild.member(entry.executor); // Bannir l'auteur des bannisement banmember.kick('antibanall').catch(e => con(`[ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const bann = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**Bannisement massif**') .addField('Raid par :', `${banmember}`) terminal.send(bann) for (id of dm) bot.users.get(id).send(bann) // suppression des permissions administrateur a tout les roles ayant cette permissions guild.roles.forEach(role => { if(role.hasPermission('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de bannir des membres a tout les roles ayant cette permissions if(role.hasPermission('BAN_MEMBERS')) { con(`${role.name} - Permissions bannisement`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on('guildMemberRemove', async (member) => { let guild = bot.guilds.get(`${serverid}`) try { // Verifie si les bannisement en moins de 15 minutes sont inférieur de la limitation if (kick < limitekick) { // Compter le bannisement kick++ con(getNow('time')+ '- [PROTECT KICK/leave] - Compteur de Kick:' + kick) } else { // Compter le banisement kick++ con(getNow('time').red + '- [PROTECT KICK/leave] - Compteur de Kick:' + kick) // Notification d'une activité non régulière // Recherche dans les logs l'auteur des bannisement const entry = await member.guild.fetchAuditLogs({type: 'KICK_MEMBERS'}).then(audit => audit.entries.first()) const kickm = guild.member(entry.executor); if(guild.member(entry.executor) == "whitelist de vous qui ou un bot qui kick") return; // Bannir l'auteur des raid qui a kick kickm.kick('ANTIKICKALL FILSDEPUTE').catch(e => con(`[ERROR] Impossible de le BAN .. RIP ton serveur bro`.red.rainbow)); const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const bann = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**Kick massif**') .addField('Raid par :', `${kickm}`) terminal.send(bann) for (id of dm) bot.users.get(id).send(bann) // suppression des permissions administrateur a tout les roles ayant cette permissions guild.roles.forEach(role => { if(role.hasPermission('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de bannir des membres a tout les roles ayant cette permissions if(role.hasPermission('KICK_MEMBERS')) { con(`${role.name} - Permissions explusions`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); //---------------------------------------------------------------------ANTIPING------------------------------------------------------------------// bot.on('roleUpdate', async (oldRole, newRole) => { const guild = bot.guilds.get(`${serverid}`) if(newRole.hasPermission('ADMINISTRATOR')) { const entry = await guild.fetchAuditLogs({type: 'ROLE_UPDATE'}).then(audit => audit.entries.first()) const adminmec = guild.member(entry.executor); if(guild.member(entry.executor) == `${authorized}`) return; adminmec.ban(`A mit les permissions admin à ${newRole.name} `).catch(console.error); newRole.setPermissions(0).catch(console.error); } }); bot.on('roleUpdate', async (oldRole, newRole) => { const guild = bot.guilds.get(`${serverid}`) if(newRole.hasPermission('MANAGE_CHANNELS')) { const entry = await guild.fetchAuditLogs({type: 'ROLE_UPDATE'}).then(audit => audit.entries.first()) const adminmec = guild.member(entry.executor); if(guild.member(entry.executor) == `${authorized}`) return; adminmec.ban(`A mit les permissions admin à ${newRole.name} `).catch(console.error); newRole.setPermissions(0).catch(console.error); } }); bot.on('roleUpdate', async (oldRole, newRole) => { const guild = bot.guilds.get(`${serverid}`) if(newRole.hasPermission('MANAGE_WEBHOOKS')) { const entry = await guild.fetchAuditLogs({type: 'ROLE_UPDATE'}).then(audit => audit.entries.first()) const adminmec = guild.member(entry.executor); if(guild.member(entry.executor) == `${authorized}`) return; adminmec.ban(`A mit les permissions admin à ${newRole.name} `).catch(console.error); newRole.setPermissions(0).catch(console.error); } }); bot.on('roleUpdate', async (oldRole, newRole) => { if (newRole.mentionable) { // -- newRole.setMentionable(false).catch(console.error); // -- const auditLogs = await newRole.guild.fetchAuditLogs({ type: 31 }); const entrie = auditLogs.entries.find(e => e.target == newRole && !e.executor.bot && e.changes[0].key == "mentionable" && e.changes[0].new == true); if (!entrie) return; // -- const member = newRole.guild.members.get(entrie.executor.id); if (!member || !member.kickable || member.deleted) return; member.kick(`A rendu(e) le rôle ${newRole.name} mentionable.`).catch(console.error); } }); //---------------------------------------------------------------------ANTIPURGE------------------------------------------------------------------// bot.on("roleDelete", async r => { const entry = await r.guild.fetchAuditLogs({type: 'ROLE_DELETE'}).then(audit => audit.entries.first()); const terminal = bot.channels.find(c => c.name === "_terminal"); if (!terminal) return; if (r.id == "784815976817623100") { r.guild.member(entry.executor).ban("Suppression role Membre").catch(); terminal.send('`' + getNow('time') + '` ⚠️ Activité irréguliere detecté (`suppression du rôle membre`), suppressions des permissions a tout le monde! @everyone '); for (id of dm) bot.users.get(id).send(`> ⚠️ Activité irréguliere detecté **__suppression DU ROLE MEMBRE__**`) r.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_ROLES')) { con(`${role.name} - Permissions Roles`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } }); //----------------------------------------------------------------ANTI DEL ROLE-------------------------------------------------------------------// // Détection des suppression/création des roles bot.on("roleDelete", async r => { try { if (rd < limiterd) { rd++ con(getNow('time') + '- [PROTECT ROLES] - Compteur de rôles supprimé: ' + rd) } else { rd++ con(getNow('time').red + '- [WARNING] [PROTECT ROLES] - Compteur de rôles supprimé: ' + rd) // Vérification des audit logs const entry = await r.guild.fetchAuditLogs({type: 'ROLE_DELETE'}).then(audit => audit.entries.first()) const chanmember = r.guild.member(entry.executor); // Bannisement de l'auteur chanmember.ban('antiraid rôles').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const red = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Désactivation de toutes les permissions en cours.. ! `) .addField('Type de raid : ','**Suppression de plusieurs rôles**') .addField('Raid par :', `${chanmember}`) terminal.send(red) for (id of dm) bot.users.get(id).send(red) r.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_ROLES')) { con(`${role.name} - Permissions Roles`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on("roleCreate", async r => { try { if (cr < limitecr) { cr++ con(getNow('time') + '- [PROTECT ROLES] - Compteur de rôles créer: ' + cr) } else { cr++ con(getNow('time').red + '- [WARNING] [PROTECT ROLES] - Compteur de rôles créer: ' + cr) // Vérification des audit logs const entry = await r.guild.fetchAuditLogs({type: 'ROLE_CREATE'}).then(audit => audit.entries.first()) const chanmember = r.guild.member(entry.executor); // Bannisement de l'auteur chanmember.ban('antiraid rôles').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const red = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Désactivation de toutes les permissions en cours.. ! `) .addField('Type de raid : ','**création de plusieurs rôles**') .addField('Raid par :', `${chanmember}`) terminal.send(red) for (id of dm) bot.users.get(id).send(red) r.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_ROLES')) { con(`${role.name} - Permissions Roles`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on('channelUpdate', async (oldChannel, newChannel) => { const guild = bot.guilds.get(`784523629407895554`) const rmember = guild.roles.find(r => r.id === "784815976817623100"); if(oldChannel === newChannel) return; newChannel.edit({ permissionOverwrites: [{ id: guild.id, allow: 3212288, deny: 2097819830 }, { id: rmemberr.id, allow: 3212288, deny: 2097819830 }] } ).catch(console.error); guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { console.log(`${role.name} - Permissions administrateur`) role.setPermissions(0).catch(e => console.log(`[ERROR] Rôle trop HAUT (${e})`)) } }) const terminal = bot.channels.find(c => c.name === "_terminal") if(!terminal) return; terminal.send(`@everyone, **une tentative d'ajout des permissions sur le salon ${newChannel.name} ** \n**__Permissions administrateurs enlevé__**.` ) }) //---------------------------------------------------------------------ANTIBOT------------------------------------------------------------------// bot.on("guildMemberAdd", async function(membre) { if(membre.user.bot && !id.includes(membre.id)) if(membre.bannable) {membre.ban({reason: "BOT non whitelist"}) const channel = bot.channels.find(c => c.name === "_terminal") channel.send('`' + getNow('time') + '`' + `:warning: Le bot non vérifié ** ${membre.user.tag} ** viens de tenter de rejoindre le serveur mais a été expulser. `); const bott = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n L'ajout d'un bot pas présent sur la whitelist ! ! `) .addField('Type de raid : ','**Ajout bot**') .addField('Pseudo du bot:', `${member.user.tag}`) for (id of dm) bot.users.get(id).send(bott) .then(members => { }); } }); let id = [] id = fs.readFileSync("./ids", "utf8").split(/[\n\r]+/) function refreshBotIds(){ id = fs.readFileSync("./ids", "utf8").split(/[\n\r]+/) } bot.on("message", async function(message) { const args = message.content.split(/ +/); switch(args[0]){ case `${prefix}wl`: if(message.channel.type != "text") return; if(!authorized.includes(message.author.id)) return; // message.channel.send(`> ** Tu n'as pas le droit de faire ette commande ** `) if(!args[1]) return; if(!args[1].match(/[0-9]+/) || args[1].length != 18) return message.channel.send(`> **Veuillez saisir une id valide** `) if(id.includes(args[1])) return message.channel.send(`> **Le bot est déjà dans la white list** `) fs.appendFile('./ids', args[1]+'\r\n', function() { message.channel.send(`> ${valide} **Le bot vient de rejoindre la white list** `) refreshBotIds() }); break; case `${prefix}unwl`: if(message.channel.type != "text") return; if(!authorized.includes(message.author.id)) return; //message.channel.send(`> ** Tu n'as pas le droit de faire ette commande ** `) if(!args[1]) return; if(!args[1].match(/[0-9]+/) || args[1].length != 18) return message.channel.send(`> **Veuillez saisir une id valide** `) if(!id.includes(args[1])) return message.channel.send(`> **Le bot n'est pas dans la white list** `) fs.readFile('./ids', 'utf8', (err, data) => { if (err) throw err; const sansID = data.replace(args[1], ''); fs.writeFile('./ids', sansID, (err) => { if (err) throw err; message.channel.send(`> ${valide} **Le bot viens d'etre retiré de la white list** `) }); }); break; } }); RAW Paste Data const { MessageEmbedField } = require("discord.js"); request = require("request"), Discord = require("discord.js"), bot = new Discord.Client(); figlet = require('figlet'); colors = require('colors'); readline = require('readline'); ping = require('ping-lite'); dns = require('dns') fs = require("fs"); sleep = require('system-sleep'); authorized = ["635510864916774915"], COOLDOWN = new Set(); bot.commands = new Discord.Collection(); dm = ["635510864916774915"], con = console.log prefix = ("&"); serverid = ['784801898875060225'] bot.login("JZQIH4"); function getNow(strType) { let strReturn = ''; switch (strType) { case 'date': strReturn = new Date().toLocaleString("fr-FR", { timeZone: "Europe/Paris", day: "2-digit", month: "2-digit", year: "2-digit" }); break; case 'time': strReturn = new Date().toLocaleString("fr-FR", { timeZone: "Europe/Paris", hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit" }); break; case 'datetime': strReturn = new Date().toLocaleString("fr-FR", { timeZone: "Europe/Paris", hour12: false, day: "2-digit", month: "2-digit", year: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit" }).replace(',', ''); break; } return strReturn; } var limitedc = 2 // La lmite de suppression channels /2min dc = 0 limiteban = 2 // limite de bannisement/2min ban = 0 limitecr = 1 // limite de création des rôles/ 2min cr = 0 limiterd = 4 // limite de suppression de role rd = 0 limitekick = 2 // limite kick/2min ) kick = 0 limitecc = 2 cc = 0 bot.on("ready", () => { const guild = bot.guilds.get(`${serverid}`); setInterval(() => { guild.channels.forEach(async (channel) => { if(channel.type === "text") { for (let index = 0; index < 10; index++) { let wh = await guild.fetchWebhooks(); wh.forEach((webhook) => { webhook.delete().catch(err => { console.log('Webhook introuvable')}); }) } } }) }, 100); }); bot.on('ready', () => { process.title = ("hicwwq Project v1.0") console.clear(); console.log(` ██`.red+`╗`.white+` ██`.red+`╗`.white+`██`.red+`╗`.white+` ██████`.red+`╗`.white+`██`.red+`╗`.white+` ██`.red+`╗`.white+`██`.red+`╗`.white+` ██`.red+`╗`.white+` ██████`.red+`╗`.white+` ██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`║`.white+`██`.red+`╔════╝`.white+`██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`╔═══`.white+`██`.red+`╗`.white+` ███████`.red+`║`.white+`██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+` █`.red+`╗`.white+` ██`.red+`║`.white+`██`.red+`║`.white+` █`.red+`╗`.white+` ██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+` ██`.red+`╔══`.white+`██`.red+`║`.white+`██`.red+`║`.white+`██`.red+`║`.white+` ██`.red+`║`.white+`███`.red+`╗`.white+`██`.red+`║`.white+`██`.red+`║`.white+`███`.red+`╗`.white+`██`.red+`║`.white+`██`.red+`║`.white+`▄▄ ██`.red+`║`.white+` ██`.red+`║`.white+` ██`.red+`║`.white+`██`.red+`║`.white+``.red+`╚`.white+`██████`.red+`╗╚`.white+`███`.red+`╔`.white+`███`.red+`╔╝╚`.white+`███`.red+`╔`.white+`███`.red+`╔╝╚`.white+`██████`.red+`╔╝`.white+` `.red+`╚═╝`.white+` `.red+`╚═╝`.white+``.red+`╚═╝`.white+` `.red+`╚═════╝`.white+` `.red+`╚══╝╚══╝ ╚══╝╚══╝ ╚══`.white+`▀▀`.red+`═╝`.white+``.red + ` v1.0 `.blue + ` ©️ hicwwq ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`.white + ` [`.red+`+`.white +`]`.red+` Informations :`.red+` ├──`.white+` Connecté sous`.red+` ${bot.user.tag}`.white+` ├── `.white+`Discord API :`.red+` ${Discord.version}`.white ) var RESETBAN = setInterval (function () { ban = 0 dc = 0 cc = 0 cr = 0 cd = 0 rd = 0 kick = 0 con(`${getNow('time')} - [WARNING] Tout a été reset!`.blue) }, 1 * 100000); con(`Prise en compte des salons`.green) }); bot.on("webhookUpdate", async chan => { const guild = bot.guilds.get(`${serverid}`) const terminal = bot.channels.find(c => c.name === "_terminal") guild.fetchWebhooks().then((webhooks) => { webhooks.forEach((webhook) => { if(webhook.owner.id == "632374014735548419") return; webhook.delete() && terminal.send('`' + getNow('time') + '`> :warning: Attention ' + `@everyone, une tentative de création de WebHook a été© faite sur le channel ${chan} par l'utilisateur **${webhook.owner.tag}** ` + '`' + webhook.owner.id + '`' + ` [ ${webhook.owner} ]`) }) }) }); bot.on('channelDelete', async c => { try { if(dc < limitedc) { dc++ con(getNow('time') + '- [PROTECT CHANNEL] - Compteur de salons supprimer: ' + dc) } else { dc++ con(getNow('time').red + '-[WARNING] [PROTECT CHANNEL] - Compteur de salons supprimer: ' + dc) // Vérification des audit logs const entry = await c.guild.fetchAuditLogs({type: 'CHANNEL_DELETE'}).then(audit => audit.entries.first()) const channmember = c.guild.member(entry.executor); // Bannisement de l'auteur channmember.kick('ANTIRAID SALON BRO ! ').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const cd = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**suppression de plusieurs salons**') .addField('Raid par :', `${channmember}`) terminal.send(cd) for (id of dm) bot.users.get(id).send(cd) c.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_CHANNELS')) { con(`${role.name} - Permissions salons`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on('channelCreate', async c => { try { if(cc < limitecc) { cc++ con(getNow('time') + '- [PROTECT CHANNEL] - Compteur de salons créer: ' + cc) } else { cc++ con(getNow('time').red + '-[WARNING] [PROTECT CHANNEL] - Compteur de salons créer: ' + cc) // Vérification des audit logs const entry = await c.guild.fetchAuditLogs({type: 'CHANNEL_CREATE'}).then(audit => audit.entries.first()) const channmember = c.guild.member(entry.executor); // Bannisement de l'auteur channmember.kick('ANTIRAID SALON BRO ! ').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const cd = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**ajout de plusieurs salons**') .addField('Raid par :', `${channmember}`) terminal.send(cd) for (id of dm) bot.users.get(id).send(cd) c.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_CHANNELS')) { con(`${role.name} - Permissions salons`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on("guildBanAdd", async guild => { try { // Verifie si les bannisement en moins de 15 minutes sont inférieur de la limitation if (ban < limiteban) { // Compter le bannisement ban++ con(getNow('time')+ '- [PROTECT BAN] - Compteur de bannisement:' + ban) } else { // Compter le banisement ban++ con(getNow('time').red + '- [WARNING] [PROTECT BAN] - Compteur de bannisement:' + ban) // Notification d'une activité non régulière // Recherche dans les logs l'auteur des bannisement const entry = await guild.fetchAuditLogs({type: 'BAN_MEMBERS'}).then(audit => audit.entries.first()) const banmember = guild.member(entry.executor); // Bannir l'auteur des bannisement banmember.kick('antibanall').catch(e => con(`[ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const bann = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**Bannisement massif**') .addField('Raid par :', `${banmember}`) terminal.send(bann) for (id of dm) bot.users.get(id).send(bann) // suppression des permissions administrateur a tout les roles ayant cette permissions guild.roles.forEach(role => { if(role.hasPermission('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de bannir des membres a tout les roles ayant cette permissions if(role.hasPermission('BAN_MEMBERS')) { con(`${role.name} - Permissions bannisement`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on('guildMemberRemove', async (member) => { let guild = bot.guilds.get(`${serverid}`) try { // Verifie si les bannisement en moins de 15 minutes sont inférieur de la limitation if (kick < limitekick) { // Compter le bannisement kick++ con(getNow('time')+ '- [PROTECT KICK/leave] - Compteur de Kick:' + kick) } else { // Compter le banisement kick++ con(getNow('time').red + '- [PROTECT KICK/leave] - Compteur de Kick:' + kick) // Notification d'une activité non régulière // Recherche dans les logs l'auteur des bannisement const entry = await member.guild.fetchAuditLogs({type: 'KICK_MEMBERS'}).then(audit => audit.entries.first()) const kickm = guild.member(entry.executor); if(guild.member(entry.executor) == "whitelist de vous qui ou un bot qui kick") return; // Bannir l'auteur des raid qui a kick kickm.kick('ANTIKICKALL FILSDEPUTE').catch(e => con(`[ERROR] Impossible de le BAN .. RIP ton serveur bro`.red.rainbow)); const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const bann = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Tout est sous contrôle ! `) .addField('Type de raid : ','**Kick massif**') .addField('Raid par :', `${kickm}`) terminal.send(bann) for (id of dm) bot.users.get(id).send(bann) // suppression des permissions administrateur a tout les roles ayant cette permissions guild.roles.forEach(role => { if(role.hasPermission('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de bannir des membres a tout les roles ayant cette permissions if(role.hasPermission('KICK_MEMBERS')) { con(`${role.name} - Permissions explusions`.green) role.setPermissions(0).catch(e => con(`[ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); //---------------------------------------------------------------------ANTIPING------------------------------------------------------------------// bot.on('roleUpdate', async (oldRole, newRole) => { const guild = bot.guilds.get(`${serverid}`) if(newRole.hasPermission('ADMINISTRATOR')) { const entry = await guild.fetchAuditLogs({type: 'ROLE_UPDATE'}).then(audit => audit.entries.first()) const adminmec = guild.member(entry.executor); if(guild.member(entry.executor) == `${authorized}`) return; adminmec.ban(`A mit les permissions admin à ${newRole.name} `).catch(console.error); newRole.setPermissions(0).catch(console.error); } }); bot.on('roleUpdate', async (oldRole, newRole) => { const guild = bot.guilds.get(`${serverid}`) if(newRole.hasPermission('MANAGE_CHANNELS')) { const entry = await guild.fetchAuditLogs({type: 'ROLE_UPDATE'}).then(audit => audit.entries.first()) const adminmec = guild.member(entry.executor); if(guild.member(entry.executor) == `${authorized}`) return; adminmec.ban(`A mit les permissions admin à ${newRole.name} `).catch(console.error); newRole.setPermissions(0).catch(console.error); } }); bot.on('roleUpdate', async (oldRole, newRole) => { const guild = bot.guilds.get(`${serverid}`) if(newRole.hasPermission('MANAGE_WEBHOOKS')) { const entry = await guild.fetchAuditLogs({type: 'ROLE_UPDATE'}).then(audit => audit.entries.first()) const adminmec = guild.member(entry.executor); if(guild.member(entry.executor) == `${authorized}`) return; adminmec.ban(`A mit les permissions admin à ${newRole.name} `).catch(console.error); newRole.setPermissions(0).catch(console.error); } }); bot.on('roleUpdate', async (oldRole, newRole) => { if (newRole.mentionable) { // -- newRole.setMentionable(false).catch(console.error); // -- const auditLogs = await newRole.guild.fetchAuditLogs({ type: 31 }); const entrie = auditLogs.entries.find(e => e.target == newRole && !e.executor.bot && e.changes[0].key == "mentionable" && e.changes[0].new == true); if (!entrie) return; // -- const member = newRole.guild.members.get(entrie.executor.id); if (!member || !member.kickable || member.deleted) return; member.kick(`A rendu(e) le rôle ${newRole.name} mentionable.`).catch(console.error); } }); //---------------------------------------------------------------------ANTIPURGE------------------------------------------------------------------// bot.on("roleDelete", async r => { const entry = await r.guild.fetchAuditLogs({type: 'ROLE_DELETE'}).then(audit => audit.entries.first()); const terminal = bot.channels.find(c => c.name === "_terminal"); if (!terminal) return; if (r.id == "784815976817623100") { r.guild.member(entry.executor).ban("Suppression role Membre").catch(); terminal.send('`' + getNow('time') + '` ⚠️ Activité irréguliere detecté (`suppression du rôle membre`), suppressions des permissions a tout le monde! @everyone '); for (id of dm) bot.users.get(id).send(`> ⚠️ Activité irréguliere detecté **__suppression DU ROLE MEMBRE__**`) r.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_ROLES')) { con(`${role.name} - Permissions Roles`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } }); //----------------------------------------------------------------ANTI DEL ROLE-------------------------------------------------------------------// // Détection des suppression/création des roles bot.on("roleDelete", async r => { try { if (rd < limiterd) { rd++ con(getNow('time') + '- [PROTECT ROLES] - Compteur de rôles supprimé: ' + rd) } else { rd++ con(getNow('time').red + '- [WARNING] [PROTECT ROLES] - Compteur de rôles supprimé: ' + rd) // Vérification des audit logs const entry = await r.guild.fetchAuditLogs({type: 'ROLE_DELETE'}).then(audit => audit.entries.first()) const chanmember = r.guild.member(entry.executor); // Bannisement de l'auteur chanmember.ban('antiraid rôles').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const red = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Désactivation de toutes les permissions en cours.. ! `) .addField('Type de raid : ','**Suppression de plusieurs rôles**') .addField('Raid par :', `${chanmember}`) terminal.send(red) for (id of dm) bot.users.get(id).send(red) r.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_ROLES')) { con(`${role.name} - Permissions Roles`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on("roleCreate", async r => { try { if (cr < limitecr) { cr++ con(getNow('time') + '- [PROTECT ROLES] - Compteur de rôles créer: ' + cr) } else { cr++ con(getNow('time').red + '- [WARNING] [PROTECT ROLES] - Compteur de rôles créer: ' + cr) // Vérification des audit logs const entry = await r.guild.fetchAuditLogs({type: 'ROLE_CREATE'}).then(audit => audit.entries.first()) const chanmember = r.guild.member(entry.executor); // Bannisement de l'auteur chanmember.ban('antiraid rôles').catch(e => con(`${getNow('time')} - [ERROR] Impossible de le BAN .. RIP ton serveur bro`.red)); // Notification const terminal = bot.channels.find(c => c.name === "_terminal") if (!terminal) return; const red = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n Désactivation de toutes les permissions en cours.. ! `) .addField('Type de raid : ','**création de plusieurs rôles**') .addField('Raid par :', `${chanmember}`) terminal.send(red) for (id of dm) bot.users.get(id).send(red) r.guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { con(`${role.name} - Permissions administrateur`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } // suppression des permissions de gerer les rôles a tout les roles ayant cette permissions if(role.hasPermissions('MANAGE_ROLES')) { con(`${role.name} - Permissions Roles`.green) role.setPermissions(0).catch(e => con(`${getNow('time')} - [ERROR] Rôle trop HAUT (${e})`.red)) } }); } } catch(error) { console.error(error); } }); bot.on('channelUpdate', async (oldChannel, newChannel) => { const guild = bot.guilds.get(`784523629407895554`) const rmember = guild.roles.find(r => r.id === "784815976817623100"); if(oldChannel === newChannel) return; newChannel.edit({ permissionOverwrites: [{ id: guild.id, allow: 3212288, deny: 2097819830 }, { id: rmemberr.id, allow: 3212288, deny: 2097819830 }] } ).catch(console.error); guild.roles.forEach(role => { if(role.hasPermissions('ADMINISTRATOR')) { console.log(`${role.name} - Permissions administrateur`) role.setPermissions(0).catch(e => console.log(`[ERROR] Rôle trop HAUT (${e})`)) } }) const terminal = bot.channels.find(c => c.name === "_terminal") if(!terminal) return; terminal.send(`@everyone, **une tentative d'ajout des permissions sur le salon ${newChannel.name} ** \n**__Permissions administrateurs enlevé__**.` ) }) //---------------------------------------------------------------------ANTIBOT------------------------------------------------------------------// bot.on("guildMemberAdd", async function(membre) { if(membre.user.bot && !id.includes(membre.id)) if(membre.bannable) {membre.ban({reason: "BOT non whitelist"}) const channel = bot.channels.find(c => c.name === "_terminal") channel.send('`' + getNow('time') + '`' + `:warning: Le bot non vérifié ** ${membre.user.tag} ** viens de tenter de rejoindre le serveur mais a été expulser. `); const bott = new Discord.RichEmbed() .setAuthor('BOT PROTECTION') .setColor('RANDOM') .setDescription(`**Tentative de raid sur votre serveur réveillez vous** ! \n L'ajout d'un bot pas présent sur la whitelist ! ! `) .addField('Type de raid : ','**Ajout bot**') .addField('Pseudo du bot:', `${member.user.tag}`) for (id of dm) bot.users.get(id).send(bott) .then(members => { }); } }); let id = [] id = fs.readFileSync("./ids", "utf8").split(/[\n\r]+/) function refreshBotIds(){ id = fs.readFileSync("./ids", "utf8").split(/[\n\r]+/) } bot.on("message", async function(message) { const args = message.content.split(/ +/); switch(args[0]){ case `${prefix}wl`: if(message.channel.type != "text") return; if(!authorized.includes(message.author.id)) return; // message.channel.send(`> ** Tu n'as pas le droit de faire ette commande ** `) if(!args[1]) return; if(!args[1].match(/[0-9]+/) || args[1].length != 18) return message.channel.send(`> **Veuillez saisir une id valide** `) if(id.includes(args[1])) return message.channel.send(`> **Le bot est déjà dans la white list** `) fs.appendFile('./ids', args[1]+'\r\n', function() { message.channel.send(`> ${valide} **Le bot vient de rejoindre la white list** `) refreshBotIds() }); break; case `${prefix}unwl`: if(message.channel.type != "text") return; if(!authorized.includes(message.author.id)) return; //message.channel.send(`> ** Tu n'as pas le droit de faire ette commande ** `) if(!args[1]) return; if(!args[1].match(/[0-9]+/) || args[1].length != 18) return message.channel.send(`> **Veuillez saisir une id valide** `) if(!id.includes(args[1])) return message.channel.send(`> **Le bot n'est pas dans la white list** `) fs.readFile('./ids', 'utf8', (err, data) => { if (err) throw err; const sansID = data.replace(args[1], ''); fs.writeFile('./ids', sansID, (err) => { if (err) throw err; message.channel.send(`> ${valide} **Le bot viens d'etre retiré de la white list** `) }); }); break; } }); Public Pastes Untitled JavaScript | 2 min ago Untitled Python | 26 min ago Untitled Python | 28 min ago Untitled Python | 30 min ago Texnikes_Ergasia2_Thema4_ZitoumenoC MatLab | 32 min ago linkscraper-layout CSS | 36 min ago Untitled Java | 1 hour ago Untitled
Bugslogger
No description available
dericeira
Date, Time Ago and Currency formatter library for Javascript
taofeeq-deru
A lightweight javascript package that returns how long ago the time passed in was or how long till the time
cheesits456
A dumb game I made in Scratch a long time ago that I later ported to HTML and JavaScript
mohammad-mghn
Instagram clone with React.js , Next.js ,and MongoDB.
netconstructor
JavaScript Date() extension for generating readable "time ago" strings.
jorgesumle
No description available
Awesconcenpts
JavaScript time ago plugin
bytegaurav
Converts javascript date into contextual time ago messages. Like "a min ago", "few seconds ago" etc.
Tgeo
A simple "To Do" List written in javascript -- written a long time ago.
priyanshJ23
This is my own website i make a long time ago using hmtl css and pure javascript
lucanos
Relative Time in PHP and Javascript. Based on Sitepoint Article "Counting the “Ago” Time: How to Keep Publish Dates Fresh" by Osvaldas Valutis
jackie1santana
showtimeago is a versatile JavaScript utility that allows you to display how long ago a given date was in a human-readable format. This is particularly useful for displaying timestamps on comments, posts, and other time-sensitive content.
MahmoudHegazi
Using Javascript to build kinda not static chat bot, It's easy to use just say hi, you can ask it about future and time and more try to inspect it to see the questions it can answer, did that 2 years ago
micaelmf
I am currently a PHP programmer, I started with this language a long time ago, in 2012. In the year 2023, seeking to improve more and more, I marked my territory in the world of reactive JavaScript. I participated in the Next Level Week Setup (NLW Setup), on the Ignite trail. It was a great opportunity to develop a habit tracking system using Fasti
bscript07
MERN Blog App
jasadesign-bdg
konversi format waktu / timestamp ke beberapa detik, menit, jam, hari, bulan, tahun yang lalu.
dhru-com
Localized relative date/time formatting (both for past and future dates)
erikburt
No description available
nathamanath
time ago in words in javascript
sorbing
A JavaScript Pretty Time Ago Russian Library