$ git clone http://tcclient.ion.nu/tc_client.git
commit 899fcd5281afefaa0dc1788d0fc99b75792aebab
Author: Alicia <...>
Date:   Wed Jun 24 18:07:50 2015 +0200

    modbot: give feedback for !wrongrequest, and if the user is a mod and the dropped video was the last one approved, remove it from goodvids since it was probably requested (and automatically approved) by accident.

diff --git a/ChangeLog b/ChangeLog
index bf98c05..f6916a2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@ tc_client-gtk: fixed windows compatibility (w32_runcmd and strndup)
 tc_client-gtk and camviewer: added some compatibility macros for older libav versions.
 modbot: added an option (--disable-lists) to disable playlist requests, instead only the first video linked to will be added to the queue.
 modbot: make a note about skipped videos (!skip) not being marked as bad, and list the skipped videos to make it easier if they were meant to be marked as bad.
+modbot: give feedback for !wrongrequest, and if the user is a mod and the dropped video was the last one approved, remove it from goodvids since it was probably requested (and automatically approved) by accident.
 0.33:
 Fixed the /forgive command (by name) which would previously fail unless the target was found in the first 'banlist' AMF0 packet.
 Added a /version remote command to give the client name and version number, making /userinfo conform to the flash client's behaviour instead, and send the response with the two separate privacy field options 'n' and 'b'.
diff --git a/utilities/modbot/modbot.c b/utilities/modbot/modbot.c
index be79794..3d61271 100644
--- a/utilities/modbot/modbot.c
+++ b/utilities/modbot/modbot.c
@@ -424,6 +424,12 @@ int main(int argc, char** argv)
             --i;
             if(!strcmp(queue.items[i].requester, nick))
             {
+              say(0, "/priv %s Removing '%s' from queue\n", nick, queue.items[i].title);
+              if(list_contains(&mods, nick) && goodvids.itemcount && !strcmp(goodvids.items[goodvids.itemcount-1], queue.items[i].video))
+              {
+                list_del(&goodvids, queue.items[i].video); // Un-approve the video since it was probably a bad search result and auto-approved because the requester is a mod
+                list_save(&goodvids, "goodvids.txt");
+              }
               queue_del(&queue, queue.items[i].video);
               if(!playing && i==0){playnext(0);}
               i=1; // distinguish from just having reached the front of the queue
@@ -444,6 +450,12 @@ int main(int argc, char** argv)
           {
             if(!strcmp(queue.items[i].requester, nick) && !strcmp(queue.items[i].video, vid))
             {
+              say(0, "/priv %s Removing '%s' from queue\n", nick, queue.items[i].title);
+              if(list_contains(&mods, nick) && goodvids.itemcount && !strcmp(goodvids.items[goodvids.itemcount-1], queue.items[i].video))
+              {
+                list_del(&goodvids, queue.items[i].video); // Un-approve the video since it was probably a bad search result and auto-approved because the requester is a mod
+                list_save(&goodvids, "goodvids.txt");
+              }
               queue_del(&queue, queue.items[i].video);
               break;
             }