Ich habe einen kleinen Discord Bot geschrieben, der User, die online, aber OHNE ROLLE sind, nach einer gewissen Zeit eine bestimmte Rolle gibt.
I developed a tiny discord bot that give online users without a role a specific role after a specific time.
Vielleicht ist der Code ja mal für jemanden nützlich.
Maybe this code may be usefull for someone.
/** * letsshoot.js - ein kleiner Discord Bot, der User, die online sind, * aber keine Rolle haben, nach einer gewissen Zeit in eine bestimmte Rolle packt. * Fragen: ms@letsshootshow.de * * Mini Howto: * yum install nodejs * npm install discord.js --save * node letsshoot.js * (kann auch unter Linux in einem screen gestartet werden, damit man den Bot permanent laufen lassen kann) * * Der Bot läuft auf meinem Discord: * https://discord.gg/sm9HGM2 */ const Discord = require('discord.js'); const client = new Discord.Client(); const token = ''; // Hier das Bot-Token einsetzen const autoroleName = 'Aktiv'; // Name der Rolle z.B. "Aktiv" const interval = 60000 * 5; // in milliskunden (60000 * 5 = 5 Minuten) const infochannel = 'news'; // Information über Rollenzuweiseung in diesem Channel posten client.on('ready', () => { console.log('Bot ready!'); var Roles = client.guilds.array()[0].roles; var AutoAddRole = Roles.find('name',autoroleName); client.channels.find('name', infochannel).send('Ich bin wieder online. :-)'); // Set autorole to online users that have no role (register them permanently) setInterval(function(){ var i; for( i in client.users.array() ){ var User = client.users.array()[i]; var has_role = false; // Search users without roles if( User.bot == false ) { var r; for(r in Roles.array() ) { var Role = Roles.array()[r]; if(Role.name != '@everyone') { var Rolecheck = Role.members.find('id', User.id); if(Rolecheck !== null) { has_role = true; break; } } } if(!has_role && User.presence.status == 'online') { // Get member var Member = client.guilds.array()[0].members.find('id', User.id); Member.addRole(AutoAddRole.id); client.channels.find('name', infochannel).send(User.username + ' ist nun seit einiger Zeit online, hat aber keine Rolle. Ich verpasse ihm mal die Rolle "' + autoroleName + '".'); console.log('User ' + User.username + ' ist online und hat keine Rolle! Fuege die Autorolle hinzu!'); } } } }, interval); }); // Bot reagiert auf "ping" - damit man mal schnell testen kann, ob er noch läuft client.on('message', message => { // If the message is "ping" if (message.content === 'ping') { // Send "pong" to the same channel message.channel.send('pong'); } }); // Bot am Server einloggen client.login(token);