#**************************************************************************
-# Copyright (C) 2009 by Michael Andreen <harvATruinDOTnu> *
+# Copyright (C) 2019 by Michael Andreen <harvATruinDOTnu> *
# *
# This program is free software; you can redistribute it and/or modify *
# it under the terms of the GNU General Public License as published by *
use feature ':5.10';
use Moose;
-
-use Set::Object ();
+use namespace::autoclean;
+extends "NDIRC::Context";
has discord_id => (
is => 'ro',
required => 1
);
-has channel => (
+has author_id => (
is => 'ro',
isa => 'Str',
required => 1
);
-has roles => (
- is => 'ro',
- isa => 'Object',
- lazy_build => 1
-);
-
-has uid => (
- is => 'ro',
- isa => 'Int',
- lazy_build => 1
-);
-
-has disp => (
- is => 'ro',
- isa => 'Object',
- required => 1
-);
-
-has model => (
- is => 'ro',
- isa => 'Object',
- required => 1
-);
-
has discord => (
is => 'ro',
isa => 'Object',
required => 1
);
-sub assert_user_roles {
- my ($self,@roles) = @_;
- return 1 unless @roles;
-
- my $need = Set::Object->new(@roles);
-
- if ($self->roles->superset($need)){
- return 1;
- }
-
- die "Access denied";
-}
-
-sub check_user_roles {
- my ($self,@roles) = @_;
+has dm_reply => (
+ is => 'rw',
+ isa => 'Bool',
+ required => 0,
+ default => 0
+);
- local $@;
- eval { $self->assert_user_roles(@roles) };
-}
sub reply {
my ($self,$msg) = @_;
- $self->message($self->channel_id, $msg);
+ if ($self->dm_reply)
+ {
+ $msg =~ s`<b>(.*?)</b>`**$1**`gi;
+ $msg =~ s`<c(\d+)>(.*?)</c>`*$2*`gi;
+ $self->discord->send_dm($self->author_id, $msg);
+ }
+ else
+ {
+ $self->message($self->channel_id, $msg);
+ }
}
sub message {
my ($self, $target, $msg) = @_;
- $msg =~ s`<b>(.*?)</b>`**$1**`gi;
- $msg =~ s`<c(\d+)>(.*?)</c>`*$2*`gi;
-
- $self->discord->send_message($target, $msg ); # Send the response.
-}
-
-sub command {
- my ($self,@command) = @_;
-
-}
-
-sub intel_log {
- my ($c,$planet, $message) = @_;
- my $log = $c->model->prepare_cached(q{
-INSERT INTO forum_posts (ftid,uid,message) VALUES(
- (SELECT ftid FROM planets WHERE pid = $3),$1,$2)
- });
- $log->execute($c->uid,$message,$planet);
+ $self->bot->discordMessage($target, $msg ); # Send the response.
}
-sub def_log {
- my ($c,$call, $message) = @_;
- my $log = $c->model->prepare(q{
-INSERT INTO forum_posts (ftid,uid,message) VALUES(
- (SELECT ftid FROM calls WHERE call = $3),$1,$2)
- });
- $log->execute($c->uid,$message,$call);
-}
-
-sub _build_roles {
- my ($self) = @_;
-
- my $query = $self->model->prepare(q{
-SELECT role FROM group_roles
-WHERE gid IN (SELECT gid FROM groupmembers JOIN users USING (uid)
- WHERE hostmask = $1)
- });
- $query->execute($self->host);
-
- my @roles;
- while (my $group = $query->fetchrow_hashref){
- push @roles,$group->{role};
- }
- return Set::Object->new(@roles);
+sub replyId {
+ my $self = shift;
+ return "D-".$self->channel_id;
}
sub _build_uid {
return $s;
}
+__PACKAGE__->meta->make_immutable;
+
1;