X-Git-Url: https://ruin.nu/git/?p=NDIRC.git;a=blobdiff_plain;f=Commands%2FUsermgm.pm;h=8dda53aaac5b3ac29c475a967a32b7ec397bf2f9;hp=2b6176041287019a27c1c5af76e5a191612ba0bf;hb=c1eaedd9ead680180a5c52a70f3cf67490057b40;hpb=57134323940284d9e14e7a2860e5dae0a551c938 diff --git a/Commands/Usermgm.pm b/Commands/Usermgm.pm index 2b61760..8dda53a 100644 --- a/Commands/Usermgm.pm +++ b/Commands/Usermgm.pm @@ -417,6 +417,42 @@ SELECT username,hostmask,pnick FROM users WHERE hostmask = $1 OR pnick = $2 } }; +command setdiscordid => { + help => q(Usage: .setdiscordid username discordid | Changes a user's discord id/tag Nick#id), + acl => q(bot_setdiscordid) +}, class extends NDIRC::Command { + method execute ($c,$msg) { + my ($nick,$discordid) = $msg =~ /^(\S+) (\S+)$/ or die 'ARGS'; + my $dbh = $c->model; + + my $f = $dbh->prepare(q{SELECT uid,username FROM users WHERE username ILIKE ?}); + $f->execute($nick); + my $user = $f->fetchrow_hashref; + if ($f->rows == 1){ + eval{ + $dbh->do(q{UPDATE users SET discord_id = NULLIF($1, 'NULL') WHERE uid = $2} + ,undef,$discordid,$user->{uid}); + $c->reply("Updated $user->{username}'s discord id to: $discordid"); + }; + if($@){ + if ($@ =~ /duplicate key value violates unique constraint/){ + my ($username, $discordid) = $dbh->selectrow_array(q{ +SELECT username,discord_id FROM users WHERE discord_id = $1 + },undef,$discordid); + $c->reply("Problem, $username already uses discord id $discordid."); + }else{ + die $@; + } + } + }elsif ($f->rows == 0){ + $c->reply("No hit, maybe spelling mistake, or add % as wildcard"); + }else{ + $c->reply("More than 1 user matched, please refine the search"); + } + $f->finish; + } +}; + my $points = class extends NDIRC::Command { has point => ( is => 'ro',