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.
Download Source!
/**
* 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);