From c1eaedd9ead680180a5c52a70f3cf67490057b40 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Sun, 24 Feb 2019 20:20:39 +0100 Subject: [PATCH] Add setdiscordid --- Commands/Usermgm.pm | 36 ++++++++++++++++++++++++++++++++++++ database/roles.sql | 3 +++ 2 files changed, 39 insertions(+) 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', diff --git a/database/roles.sql b/database/roles.sql index 657c969..0e5e6de 100644 --- a/database/roles.sql +++ b/database/roles.sql @@ -44,6 +44,7 @@ INSERT INTO roles VALUES('irc_allycoords'); INSERT INTO roles VALUES('irc_allygals'); INSERT INTO roles VALUES('irc_g_intel'); INSERT INTO roles VALUES('irc_anon'); +INSERT INTO roles VALUES('bot_setdiscordid'); INSERT INTO group_roles (gid,role) VALUES('T','irc_p_nick'); INSERT INTO group_roles (gid,role) VALUES('T','irc_p_intel'); @@ -86,6 +87,7 @@ INSERT INTO group_roles (gid,role) VALUES('T','irc_cmd'); INSERT INTO group_roles (gid,role) VALUES('T','irc_allycoords'); INSERT INTO group_roles (gid,role) VALUES('T','irc_allygals'); INSERT INTO group_roles (gid,role) VALUES('T','irc_g_intel'); +INSERT INTO group_roles (gid,role) VALUES('T','bot_setdiscordid'); INSERT INTO group_roles (gid,role) VALUES('M','irc_gs'); INSERT INTO group_roles (gid,role) VALUES('M','irc_scan'); @@ -131,6 +133,7 @@ INSERT INTO group_roles (gid,role) VALUES('H','irc_forum_others'); INSERT INTO group_roles (gid,role) VALUES('H','irc_allycoords'); INSERT INTO group_roles (gid,role) VALUES('H','irc_allygals'); INSERT INTO group_roles (gid,role) VALUES('H','irc_g_intel'); +INSERT INTO group_roles (gid,role) VALUES('H','bot_setdiscordid'); INSERT INTO group_roles (gid,role) VALUES('B','irc_points_others'); INSERT INTO group_roles (gid,role) VALUES('B','irc_a'); -- 2.39.2