Added color command
parent
af3a6d49d4
commit
0dfdd27955
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue