From 24e532eed6152a402b8d474713dcc72302a8d426 Mon Sep 17 00:00:00 2001 From: Fortunate-MAN Date: Mon, 14 Jan 2019 19:19:20 +0530 Subject: [PATCH] Fixes crucial bug introduced in 0.6.7; also fixes #11 --- README.md | 1 + Source/AllCommands.py | 120 ++++++++++++++++-- Source/{Commands => }/Command.py | 0 Source/Commands/CommandAlive.py | 18 --- Source/Commands/CommandAmiprivileged.py | 21 --- Source/Commands/CommandListPrivilegedUsers.py | 27 ---- Source/Commands/CommandListRunningCommands.py | 29 ----- Source/Commands/CommandPrivilegeUser.py | 34 ----- Source/Commands/CommandReboot.py | 20 --- Source/Commands/CommandStop.py | 20 --- Source/Commands/CommandUnprivilegeUser.py | 21 --- Source/Commands/__init__.py | 0 setup.py | 2 +- 13 files changed, 113 insertions(+), 200 deletions(-) rename Source/{Commands => }/Command.py (100%) delete mode 100644 Source/Commands/CommandAlive.py delete mode 100644 Source/Commands/CommandAmiprivileged.py delete mode 100644 Source/Commands/CommandListPrivilegedUsers.py delete mode 100644 Source/Commands/CommandListRunningCommands.py delete mode 100644 Source/Commands/CommandPrivilegeUser.py delete mode 100644 Source/Commands/CommandReboot.py delete mode 100644 Source/Commands/CommandStop.py delete mode 100644 Source/Commands/CommandUnprivilegeUser.py delete mode 100644 Source/Commands/__init__.py diff --git a/README.md b/README.md index 9bc744e..439c4ba 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ Some incomplete documentation of Botpy exists here: https://botpy.readthedocs.io # Changelog + - **v0.7.3**: Finally fixes the bug introduced in 0.6.7. All default commands have been moved to `AllCommands.py`; this also fixes #11. - **v0.7.2**: Another attempt at 0.7.1. - **v0.7.1**: Fixes bug introduced in 0.6.7. - **v0.7.0**: Allow multiple aliases for a bot; #7. diff --git a/Source/AllCommands.py b/Source/AllCommands.py index 556d3e3..25c9e82 100644 --- a/Source/AllCommands.py +++ b/Source/AllCommands.py @@ -3,15 +3,117 @@ # Botpy # # Created by Ashish Ahuja on 13th January 2019. +# Licensed under WTFPL. # -from Commands.CommandAlive import CommandAlive -from Commands.CommandListRunningCommands import CommandListRunningCommands -from Commands.CommandPrivilegeUser import CommandPrivilegeUser -from Commands.CommandStop import CommandStop -from Commands.CommandUnprivilegeUser import CommandUnprivilegeUser -from Commands.CommandAmiprivileged import CommandAmiprivileged -from Commands.CommandListPrivilegedUsers import CommandListPrivilegedUsers -from Commands.CommandReboot import CommandReboot -from Commands.Command import Command +from .Command import * +from . import Utilities + +import tabulate +import re + +class CommandAlive(Command): + @staticmethod + def usage(): + return ["alive", "status"] + + def run(self): + self.reply("Yes") + +class CommandAmiprivileged(Command): + def usage(): + return ["amiprivileged", "doihaveprivs", "privileges"] + + def run(self): + user_privs = self.message.user.get_privilege_type() + if user_privs is None: + self.reply("You do not have any privileges.") + else: + self.reply("You have the privilege: " + user_privs.name) + +class CommandListPrivilegedUsers(Command): + def usage(): + return ["membership", "privileged", "listprivileged"] + + def run(self): + privilege_list = list() + + for each_user in self.message.room.get_users(): + if each_user.get_privilege_type() is not None: + privilege_list.append([each_user.id, each_user.get_privilege_type().name]) + + table = tabulate.tabulate(privilege_list, headers=["User ID", "Privilege level"], tablefmt="orgtbl") + + self.post(" " + table.replace("\n", "\n ")) + +class CommandListRunningCommands(Command): + @staticmethod + def usage(): + return ["running commands", "rc"] + + def run(self): + command_list = list() + + for each_command, _ in self.command_manager.running_commands: + command_list.append([each_command.message.user.name, each_command.usage()[each_command.usage_index]]) + + table = tabulate.tabulate(command_list, headers=["User", "Command"], tablefmt="orgtbl") + + self.post(" " + re.sub('\n', '\n ', table)) + +class CommandPrivilegeUser(Command): + def usage(): + return ["privilege * *", "addpriv * *"] + + def privileges(self): + return 0 + + def run(self): + user_id = int(self.arguments[0]) + privilege_name = self.arguments[1] + + privilege_type = self.message.room.get_privilege_type_by_name(privilege_name) + + if privilege_type == None: + self.reply("Please give a valid privilege type") + return + + if self.message.room.is_user_privileged(user_id, privilege_type.level): + self.reply("The user specified already has the required privileges.") + return + + self.message.room.change_privilege_level(user_id, privilege_type) + self.reply("The user specified has been given the privileges.") + +class CommandUnprivilegeUser(Command): + @staticmethod + def usage(): + return ["unprivilege *", "unprivilege user *", "remove privileges *"] + + def run(self): + user_id = int(self.arguments[0]) + + self.message.room.change_privilege_level(user_id) + self.reply("The user specified has been stripped of all privileges.") + +class CommandReboot(Command): + @staticmethod + def usage(): + return ['reboot', 'restart'] + + def run(self): + self.reply("Rebooting...") + Utilities.StopReason.reboot = True + +class CommandStop(Command): + @staticmethod + def usage(): + return ['stop', 'shutdown'] + + def run(self): + self.reply("Shutting down...") + Utilities.StopReason.shutdown = True + + + diff --git a/Source/Commands/Command.py b/Source/Command.py similarity index 100% rename from Source/Commands/Command.py rename to Source/Command.py diff --git a/Source/Commands/CommandAlive.py b/Source/Commands/CommandAlive.py deleted file mode 100644 index 4afb0d6..0000000 --- a/Source/Commands/CommandAlive.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# CommandAlive.py -# Botpy -# -# Created by Ashish Ahuja. -# -# - -from .Command import * - - -class CommandAlive(Command): - @staticmethod - def usage(): - return ["alive", "status"] - - def run(self): - self.reply("Yes") diff --git a/Source/Commands/CommandAmiprivileged.py b/Source/Commands/CommandAmiprivileged.py deleted file mode 100644 index e69cefa..0000000 --- a/Source/Commands/CommandAmiprivileged.py +++ /dev/null @@ -1,21 +0,0 @@ -# -# CommandAmiprivileged.py -# Botpy -# -# Created by Ashish Ahuja on 29th September 2017. -# -# - -from .Command import * - - -class CommandAmiprivileged(Command): - def usage(): - return ["amiprivileged", "doihaveprivs", "privileges"] - - def run(self): - user_privs = self.message.user.get_privilege_type() - if user_privs is None: - self.reply("You do not have any privileges.") - else: - self.reply("You have the privilege: " + user_privs.name) diff --git a/Source/Commands/CommandListPrivilegedUsers.py b/Source/Commands/CommandListPrivilegedUsers.py deleted file mode 100644 index 8724825..0000000 --- a/Source/Commands/CommandListPrivilegedUsers.py +++ /dev/null @@ -1,27 +0,0 @@ -# -# CommandListPrivilegedUsers.py -# Botpy -# -# Created by Ashish Ahuja on 1st October 2017. -# -# - -import tabulate - -from .Command import * - - -class CommandListPrivilegedUsers(Command): - def usage(): - return ["membership", "privileged", "listprivileged"] - - def run(self): - privilege_list = list() - - for each_user in self.message.room.get_users(): - if each_user.get_privilege_type() is not None: - privilege_list.append([each_user.id, each_user.get_privilege_type().name]) - - table = tabulate.tabulate(privilege_list, headers=["User ID", "Privilege level"], tablefmt="orgtbl") - - self.post(" " + table.replace("\n", "\n ")) diff --git a/Source/Commands/CommandListRunningCommands.py b/Source/Commands/CommandListRunningCommands.py deleted file mode 100644 index 7820a0d..0000000 --- a/Source/Commands/CommandListRunningCommands.py +++ /dev/null @@ -1,29 +0,0 @@ -# -# CommandListRunningCommands.py -# Botpy -# -# Created by Ashish Ahuja on 6th September 2017. -# -# - -import re - -import tabulate - -from .Command import * - - -class CommandListRunningCommands(Command): - @staticmethod - def usage(): - return ["running commands", "rc"] - - def run(self): - command_list = list() - - for each_command, _ in self.command_manager.running_commands: - command_list.append([each_command.message.user.name, each_command.usage()[each_command.usage_index]]) - - table = tabulate.tabulate(command_list, headers=["User", "Command"], tablefmt="orgtbl") - - self.post(" " + re.sub('\n', '\n ', table)) diff --git a/Source/Commands/CommandPrivilegeUser.py b/Source/Commands/CommandPrivilegeUser.py deleted file mode 100644 index 32b2ecf..0000000 --- a/Source/Commands/CommandPrivilegeUser.py +++ /dev/null @@ -1,34 +0,0 @@ -# -# CommandPrivilegeUser.py -# Botpy -# -# Created by Ashish Ahuja on 17th September 2017. -# -# - -from .Command import * - - -class CommandPrivilegeUser(Command): - def usage(): - return ["privilege * *", "addpriv * *"] - - def privileges(self): - return 0 - - def run(self): - user_id = int(self.arguments[0]) - privilege_name = self.arguments[1] - - privilege_type = self.message.room.get_privilege_type_by_name(privilege_name) - - if privilege_type == None: - self.reply("Please give a valid privilege type") - return - - if self.message.room.is_user_privileged(user_id, privilege_type.level): - self.reply("The user specified already has the required privileges.") - return - - self.message.room.change_privilege_level(user_id, privilege_type) - self.reply("The user specified has been given the privileges.") diff --git a/Source/Commands/CommandReboot.py b/Source/Commands/CommandReboot.py deleted file mode 100644 index 6ecd008..0000000 --- a/Source/Commands/CommandReboot.py +++ /dev/null @@ -1,20 +0,0 @@ -# -# CommandReboot.py -# Botpy -# -# Created by Ashish Ahuja on 5th October 2017. -# -# - -from .Command import * -from . import Utilities - - -class CommandReboot(Command): - @staticmethod - def usage(): - return ['reboot', 'restart'] - - def run(self): - self.reply("Rebooting...") - Utilities.StopReason.reboot = True diff --git a/Source/Commands/CommandStop.py b/Source/Commands/CommandStop.py deleted file mode 100644 index 4fb293a..0000000 --- a/Source/Commands/CommandStop.py +++ /dev/null @@ -1,20 +0,0 @@ -# -# CommandStop.py -# Botpy -# -# Created by Ashish Ahuja on 5th September 2017. -# -# - -from .Command import * -from . import Utilities - - -class CommandStop(Command): - @staticmethod - def usage(): - return ['stop', 'shutdown'] - - def run(self): - self.reply("Shutting down...") - Utilities.StopReason.shutdown = True diff --git a/Source/Commands/CommandUnprivilegeUser.py b/Source/Commands/CommandUnprivilegeUser.py deleted file mode 100644 index 6e83f19..0000000 --- a/Source/Commands/CommandUnprivilegeUser.py +++ /dev/null @@ -1,21 +0,0 @@ -# -# CommandUnprivilegeUser.py -# Botpy -# -# Created by Ashish Ahuja on 28th September 2017. -# -# - -from .Command import * - - -class CommandUnprivilegeUser(Command): - @staticmethod - def usage(): - return ["unprivilege *", "unprivilege user *", "remove privileges *"] - - def run(self): - user_id = int(self.arguments[0]) - - self.message.room.change_privilege_level(user_id) - self.reply("The user specified has been stripped of all privileges.") diff --git a/Source/Commands/__init__.py b/Source/Commands/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/setup.py b/setup.py index 98dada9..4ba9ce9 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ setup ( name = "BotpySE", packages = ["BotpySE"], - version = "0.7.2", + version = "0.7.3", description = "A python framework to create chatbots on the StackExchange network.", author = "Ashish Ahuja", author_email = "ashish.ahuja@sobotics.org",