6 use Discord\Parts\User\Activity;
7 use Illuminate\Database\Eloquent\Factories\HasFactory;
8 use Illuminate\Database\Eloquent\Model;
10 class DiscordBotCommand extends Model
14 public function execute(Discord $discord) {
15 $this->status = 'executing';
16 $this->executed_at = now();
20 switch ($this->command) {
22 $this->executePresence($discord);
25 throw new Exception('unrecognized command');
27 $this->status = 'done';
29 } catch (\Exception $e) {
30 $this->status = 'exception';
32 'type' => get_class($e),
33 'message' => $e->getMessage(),
39 protected function executePresence(Discord $discord) {
44 if (isset($this->parameters['activity'])) {
45 $activity = new Activity($discord);
46 $activity->type = $this->parameters['activity'];
47 if (isset($this->parameters['name'])) {
48 $activity->name = $this->parameters['name'];
50 if (isset($this->parameters['url'])) {
51 $activity->url = $this->parameters['url'];
54 if (isset($this->parameters['idle'])) {
55 $idle = $this->parameters['idle'];
57 if (isset($this->parameters['status'])) {
58 $status = $this->parameters['status'];
60 if (isset($this->parameters['afk'])) {
61 $afk = $this->parameters['afk'];
63 $discord->updatePresence($activity, $idle, $status, $afk);
67 'parameters' => 'array',
69 'executed_at' => 'datetime',