discord = new Discord([ 'token' => 'OTAyODgxNTUzMjU5MDQ0OTM1.YXk3-Q.VYjX0smJWx4eCRVbxP_ACA3veXI', 'intents' => Intents::getDefaultIntents() | Intents::GUILD_MEMBERS | Intents::GUILD_PRESENCES, 'loadAllMembers' => true, ]); $this->discord->on('ready', [$this, 'initialize']); } public function initialize(Discord $discord) { $discord->on(Event::GUILD_MEMBER_ADD, [$this, 'moveMemberToNotToad']); $discord->on(Event::MESSAGE_CREATE, [$this, 'setRoleColor']); } public function moveMemberToNotToad(Member $member, Discord $discord) { if('902654364685074522' !== $member->guild_id) { return false; } $notToadRole = $member->guild->roles->find(function (Role $role) { return '902655062982148106' === $role->id; }); if(null === $notToadRole) { return false; } $member->addRole($notToadRole); return true; } public function setRoleColor(Message $message, Discord $discord) { if('902654364685074522' !== $message->guild_id) { return false; } preg_match_all('/[^\s]+/', $message->content, $matches); $messageWords = $matches[0]; if($messageWords[0] !== '!'.self::COMMAND_NAME) { return false; } if($messageWords[1] !== 'color') { return false; } $color = strtoupper($messageWords[2]); if(preg_match('/^#[0-9A-F]{6}$/', $color) !== 1) { return false; } $guild = $discord->guilds->get('id', '902654364685074522'); $colorRole = $guild->roles->find(function (Role $role) use ($color) { return $role->name === $color; }); $colorInt = intval(substr($color, 1), 16); if(null !== $colorRole) { $message->member->addRole($colorRole); $message->delete(); return true; } $guild->createRole([ 'name' => $color, 'color' => $colorInt, ])->done(function (Role $colorRole) use ($message, $guild) { $roles = $guild->roles; $rolesArray = $roles->toArray(); $rolesArrayPositions = []; foreach($rolesArray as $role) { $rolesArrayPositions[$role->position+1] = $role->id; if($role->id === $colorRole->id) { $rolesArrayPositions[1] = 1; } } $guild->updateRolePositions($rolesArrayPositions); $message->member->addRole($colorRole); $message->delete(); }); return true; } public function run() { $this->discord->run(); } }