Added color command

master
Dany Thach 2021-10-31 17:51:15 +01:00
parent af3a6d49d4
commit 0dfdd27955
1 changed files with 40 additions and 1 deletions

View File

@ -3,6 +3,8 @@
namespace Omnicron\Toadling; namespace Omnicron\Toadling;
use \Discord\Discord; use \Discord\Discord;
use \Discord\Parts\Channel\Message;
use \Discord\Parts\Guild\Role;
use \Discord\Parts\User\Member; use \Discord\Parts\User\Member;
use \Discord\WebSockets\Intents; use \Discord\WebSockets\Intents;
use \Discord\WebSockets\Event; use \Discord\WebSockets\Event;
@ -10,6 +12,8 @@ use \Discord\WebSockets\Event;
class Toadling class Toadling
{ {
public const COMMAND_NAME = 'toadling';
protected Discord $discord; protected Discord $discord;
public function __construct() { public function __construct() {
@ -23,13 +27,14 @@ class Toadling
public function initialize(Discord $discord) { public function initialize(Discord $discord) {
$discord->on(Event::GUILD_MEMBER_ADD, [$this, 'moveMemberToNotToad']); $discord->on(Event::GUILD_MEMBER_ADD, [$this, 'moveMemberToNotToad']);
$discord->on(Event::MESSAGE_CREATE, [$this, 'setRoleColor']);
} }
public function moveMemberToNotToad(Member $member, Discord $discord) { public function moveMemberToNotToad(Member $member, Discord $discord) {
if('902654364685074522' !== $member->guild_id) { if('902654364685074522' !== $member->guild_id) {
return false; return false;
} }
$notToadRole = $member->guild->roles->find(function ($role) { $notToadRole = $member->guild->roles->find(function (Role $role) {
return '902655062982148106' === $role->id; return '902655062982148106' === $role->id;
}); });
if(null === $notToadRole) { if(null === $notToadRole) {
@ -39,6 +44,40 @@ class Toadling
return true; return true;
} }
public function setRoleColor(Message $message, Discord $discord) {
if('902654364685074522' !== $message->guild_id) {
return false;
}
preg_match_all('/[^\s]+/', $message->content, $messageWords);
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;
}
$colorRole = $message->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;
}
$message->guild->createRole([
'name' => $color,
'color' => $colorInt,
])->done(function (Role $colorRole) use ($message) {
$message->member->addRole($colorRole);
$message->delete();
});
return true;
}
public function run() { public function run() {
$this->discord->run(); $this->discord->run();
} }