forked from miguel456/luke-bot
Assign list of roles to new user on join
This commit is contained in:
parent
8470b8a423
commit
7a79963c47
|
@ -8,6 +8,9 @@ COMMAND_PREFIX=""
|
|||
# Sign up for an API key at the CatAPI website. Used for commands in the Fun category.
|
||||
CAT_API_KEY=""
|
||||
|
||||
# Assign these roles to members on join
|
||||
JOIN_ROLES="ID1,ID2"
|
||||
|
||||
# JSON Web Token Configuration
|
||||
RASPBERRY_STAFF_URL=""
|
||||
RASPBERRY_STAFF_USERNAME=""
|
||||
|
|
|
@ -11,6 +11,7 @@ $dotenv->load();
|
|||
$dotenv->required('BOT_AUTH_TOKEN')->notEmpty();
|
||||
$dotenv->required('COMMAND_PREFIX')->notEmpty();
|
||||
$dotenv->required('CAT_API_KEY')->notEmpty();
|
||||
$dotenv->required('JOIN_ROLES')->notEmpty();
|
||||
|
||||
define('PROJECT_ROOT', realpath(__DIR__ . '/../../'));
|
||||
|
||||
|
|
|
@ -2,8 +2,12 @@
|
|||
|
||||
namespace nogueiracodes\RaspberryBot\Core;
|
||||
|
||||
use Analog\Analog;
|
||||
use Analog\Handler\Mongo;
|
||||
use Discord\Discord;
|
||||
use Discord\DiscordCommandClient;
|
||||
use Discord\Parts\User\Member;
|
||||
use Discord\WebSockets\Event;
|
||||
use Exception;
|
||||
use nogueiracodes\RaspberryBot\Core\Interfaces\Action;
|
||||
use nogueiracodes\RaspberryBot\Core\Interfaces\Command;
|
||||
|
@ -128,6 +132,30 @@ class RaspberryBot
|
|||
$this->commandClient->on('ready', function()
|
||||
{
|
||||
|
||||
$this->commandClient->on(Event::GUILD_MEMBER_ADD, function(Member $member, Discord $discord) {
|
||||
|
||||
Analog::info('Bot: New member ' . $member->username . '#' . $member->discriminator . ' has joined the current guild.');
|
||||
|
||||
if (isset($_ENV['JOIN_ROLES']) && is_int($_ENV['JOIN_ROLES']))
|
||||
{
|
||||
$roles = explode(',', $_ENV['JOIN_ROLES']);
|
||||
foreach($roles as $role)
|
||||
{
|
||||
// This approach is prone to errors since calling done() passes error responsibility to us, so if an error escapes any of the callbacks, it causes a fatal error
|
||||
$member->addRole($role)->done(function ($promise) use ($member){
|
||||
|
||||
Analog::info('Bot: Successfully added role to ' . $member->id);
|
||||
|
||||
}, function($rejectedPromise) use ($member) {
|
||||
|
||||
Analog::error('Bot: Rejected role promise, failed to add role to user ' . $member->id . '. Rejection reason: ' . $rejectedPromise->getMessage());
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$this->commandClient->on('message', function($message)
|
||||
{
|
||||
if (!empty($this->commands) && $this->isCommand($message))
|
||||
|
|
Loading…
Reference in New Issue