From 9205af74b7768f492dcdb24c4cd2bab4637896e2 Mon Sep 17 00:00:00 2001 From: Jackson Egan Date: Thu, 10 Sep 2020 22:31:20 -0400 Subject: [PATCH 1/6] Add welcome bot behavior --- docker-compose.yml | 3 ++ modules/welcome_room.py | 92 ++++++++++++++++++++++++++++++++++ modules/welcome_server.py | 103 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 modules/welcome_room.py create mode 100644 modules/welcome_server.py diff --git a/docker-compose.yml b/docker-compose.yml index ee49d83..173f931 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,6 +14,9 @@ services: - BOT_OWNERS - DEBUG - TZ + - WELCOME_ROOMID + - WELCOME_MESSAGE + - WELCOME_ROOM_NOTIFY_DEPARTURE volumes: - ${PWD}/config/:/bot/config - ${PWD}/credentials.json:/bot/credentials.json diff --git a/modules/welcome_room.py b/modules/welcome_room.py new file mode 100644 index 0000000..ea20191 --- /dev/null +++ b/modules/welcome_room.py @@ -0,0 +1,92 @@ +import os +import itertools +from modules.common.module import BotModule + + +class MatrixModule(BotModule): + """ + Detect new users who join the provided room, DM them a welcome message, and + alert bot owners that a new user has been welcomed. + """ + + def __init__(self, name): + super().__init__(name) + room_id = os.getenv("WELCOME_ROOMID") + self.room_id = room_id + self.last_welcome_room_user_count = 0 + self.last_welcome_room_users = [] + + # If the provided welcome message is a file path, read the file into + # the welcome message. Otherwise, use the variable data as the message. + if os.path.isFile(os.getenv("WELCOME_MESSAGE")): + with open(os.getenv("WELCOME_MESSAGE"), "r") as file: + self.welcome_message = file.read() + else: + self.welcome_message = os.getenv("WELCOME_MESSAGE") + + async def matrix_message(self, bot, room, event): + return + + async def matrix_poll(self, bot, pollcount): + newcomer_room_users = bot.client.rooms[self.room_id].users + newcomer_room_user_delta = self.get_user_list_delta( + newcomer_room_users, + self.last_welcome_room_users + ) + self.last_welcome_room_user_count = len(newcomer_room_users) + self.last_welcome_room_users = [u for u in newcomer_room_users] + + if pollcount != 1: + new_users = newcomer_room_user_delta.get("recently_added", []) + if os.getenv("WELCOME_ROOM_NOTIFY_DEPARTURE") and \ + len(newcomer_room_user_delta.get("recently_removed")) > 0: + for owner in bot.owners: + await bot.send_msg( + owner, + "Welcome Bot", + "User {left} left the Newcomers channel".format( + left=newcomer_room_user_delta.get( + "recently_removed") + ) + ) + await self.welcome_users(new_users, bot) + + def help(self): + return "Poll for new users in the room and welcome them" + + async def welcome_users(self, user_list, bot): + for user in user_list: + await bot.send_msg( + user, + "Welcome", + self.welcome_message + ) + for owner in bot.owners: + await bot.send_msg( + owner, + "Welcome Bot", + "Sent a welcome message to: {noobs}".format( + noobs=user_list + ) + ) + + def get_user_list_delta( + self, + current_user_list, + previous_user_list + ): + recently_added = list(itertools.filterfalse( + lambda u: u in previous_user_list, + current_user_list + )) + recently_removed = list(itertools.filterfalse( + lambda u: u in current_user_list, + previous_user_list + )) + total_change = len(recently_added) + len(recently_removed) + + return { + "total_change": total_change, + "recently_removed": recently_removed, + "recently_added": recently_added + } diff --git a/modules/welcome_server.py b/modules/welcome_server.py new file mode 100644 index 0000000..a00e779 --- /dev/null +++ b/modules/welcome_server.py @@ -0,0 +1,103 @@ +import os +import itertools +import requests +from modules.common.module import BotModule + + +class MatrixModule(BotModule): + """ + Detect new users who join the server, DM them a welcome message, and alert + bot owners that a new user has been welcomed. + + Note: This module will only work if the bot is a server admin. This + privilege level has risks. + """ + + def __init__(self, name): + super().__init__(name) + self.access_token = os.getenv("MATRIX_ACCESS_TOKEN") + self.user_query_url = os.getenv("MATRIX_SERVER") + "/_synapse/admin/v2/users" + self.last_server_user_count = 0 + self.last_server_users = [] + + # If the provided welcome message is a file path, read the file into + # the welcome message. Otherwise, use the variable data as the message. + if os.path.isFile(os.getenv("WELCOME_MESSAGE")): + with open(os.getenv("WELCOME_MESSAGE"), "r") as file: + self.welcome_message = file.read() + else: + self.welcome_message = os.getenv("WELCOME_MESSAGE") + + async def matrix_message(self, bot, room, event): + return + + async def matrix_poll(self, bot, pollcount): + server_user_delta = self.get_server_user_delta() + + # The first time this bot runs it will detect all users as new, so + # allow it to one once without taking action. + if pollcount != 1: + new_users = [u.get("name") for u in server_user_delta.get( + "recently_added", [])] + await self.welcome_users(new_users, bot) + + def help(self): + return "Poll for new users on the server and welcome them" + + async def welcome_users(self, user_list, bot): + for user in user_list: + await bot.send_msg( + user, + "Welcome", + self.welcome_message + ) + for owner in bot.owners: + await bot.send_msg( + owner, + "Welcome Bot", + "Sent a welcome message to: {new_users}".format( + new_users=user_list + ) + ) + + def get_user_list_delta( + self, + current_user_list, + previous_user_list + ): + recently_added = list(itertools.filterfalse( + lambda u: u in previous_user_list, + current_user_list + )) + recently_removed = list(itertools.filterfalse( + lambda u: u in current_user_list, + previous_user_list + )) + total_change = len(recently_added) + len(recently_removed) + + return { + "total_change": total_change, + "recently_removed": recently_removed, + "recently_added": recently_added + } + + def get_server_user_delta(self): + """ + Get the full user list for the server and return the change in users + since the last run. + """ + user_data = requests.get( + self.user_query_url, + headers={"Authorization": "Bearer {token}".format( + token=self.access_token + )} + ) + user_data_json = user_data.json() + user_list = user_data_json.get("users", []) + user_delta = self.get_user_list_delta( + user_list, + self.last_server_users + ) + self.last_server_users = [u for u in user_list] + self.last_server_user_count = user_data_json.get("total") + return user_delta From d38c8c7b1c6661d2a259a07dea6335ecd1398d9f Mon Sep 17 00:00:00 2001 From: Jackson Egan Date: Thu, 10 Sep 2020 23:30:16 -0400 Subject: [PATCH 2/6] Add welcome file --- docker-compose.yml | 1 + modules/welcome_room.py | 24 ++++++++++++------------ modules/welcome_server.py | 17 +++++++++-------- welcome.md | 1 + 4 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 welcome.md diff --git a/docker-compose.yml b/docker-compose.yml index 173f931..165d563 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,5 +21,6 @@ services: - ${PWD}/config/:/bot/config - ${PWD}/credentials.json:/bot/credentials.json - ${PWD}/token.pickle:/bot/token.pickle + - ${PWD}/welcome.md:/bot/welcome.md stop_signal: SIGINT diff --git a/modules/welcome_room.py b/modules/welcome_room.py index ea20191..e15183d 100644 --- a/modules/welcome_room.py +++ b/modules/welcome_room.py @@ -11,14 +11,13 @@ class MatrixModule(BotModule): def __init__(self, name): super().__init__(name) - room_id = os.getenv("WELCOME_ROOMID") - self.room_id = room_id + self.room_id = os.getenv("WELCOME_ROOMID") self.last_welcome_room_user_count = 0 self.last_welcome_room_users = [] # If the provided welcome message is a file path, read the file into # the welcome message. Otherwise, use the variable data as the message. - if os.path.isFile(os.getenv("WELCOME_MESSAGE")): + if os.path.isfile(os.getenv("WELCOME_MESSAGE")): with open(os.getenv("WELCOME_MESSAGE"), "r") as file: self.welcome_message = file.read() else: @@ -38,13 +37,13 @@ class MatrixModule(BotModule): if pollcount != 1: new_users = newcomer_room_user_delta.get("recently_added", []) - if os.getenv("WELCOME_ROOM_NOTIFY_DEPARTURE") and \ + if os.getenv("WELCOME_ROOM_NOTIFY_DEPARTURE", 0) and \ len(newcomer_room_user_delta.get("recently_removed")) > 0: for owner in bot.owners: await bot.send_msg( owner, "Welcome Bot", - "User {left} left the Newcomers channel".format( + "User {left} left the welcome channel".format( left=newcomer_room_user_delta.get( "recently_removed") ) @@ -61,14 +60,15 @@ class MatrixModule(BotModule): "Welcome", self.welcome_message ) - for owner in bot.owners: - await bot.send_msg( - owner, - "Welcome Bot", - "Sent a welcome message to: {noobs}".format( - noobs=user_list + if len(user_list) > 0: + for owner in bot.owners: + await bot.send_msg( + owner, + "Welcome Bot", + "Sent a welcome message to: {noobs}".format( + noobs=user_list + ) ) - ) def get_user_list_delta( self, diff --git a/modules/welcome_server.py b/modules/welcome_server.py index a00e779..b1a45fb 100644 --- a/modules/welcome_server.py +++ b/modules/welcome_server.py @@ -22,7 +22,7 @@ class MatrixModule(BotModule): # If the provided welcome message is a file path, read the file into # the welcome message. Otherwise, use the variable data as the message. - if os.path.isFile(os.getenv("WELCOME_MESSAGE")): + if os.path.isfile(os.getenv("WELCOME_MESSAGE")): with open(os.getenv("WELCOME_MESSAGE"), "r") as file: self.welcome_message = file.read() else: @@ -51,14 +51,15 @@ class MatrixModule(BotModule): "Welcome", self.welcome_message ) - for owner in bot.owners: - await bot.send_msg( - owner, - "Welcome Bot", - "Sent a welcome message to: {new_users}".format( - new_users=user_list + if len(user_list) > 0: + for owner in bot.owners: + await bot.send_msg( + owner, + "Welcome Bot", + "Sent a welcome message to: {new_users}".format( + new_users=user_list + ) ) - ) def get_user_list_delta( self, diff --git a/welcome.md b/welcome.md new file mode 100644 index 0000000..a67a121 --- /dev/null +++ b/welcome.md @@ -0,0 +1 @@ +Welcome to the server. From 7bf0ff5e13e095465a93234bf2c528107ad17f7d Mon Sep 17 00:00:00 2001 From: Jackson Egan Date: Mon, 14 Sep 2020 23:35:47 -0400 Subject: [PATCH 3/6] Allow welcome behavior to be configured via chat commands --- docker-compose.yml | 3 -- modules/welcome_room.py | 106 +++++++++++++++++++++++++------------- modules/welcome_server.py | 65 +++++++++++++++-------- welcome.md | 1 - 4 files changed, 113 insertions(+), 62 deletions(-) delete mode 100644 welcome.md diff --git a/docker-compose.yml b/docker-compose.yml index 165d563..c01bb52 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,9 +14,6 @@ services: - BOT_OWNERS - DEBUG - TZ - - WELCOME_ROOMID - - WELCOME_MESSAGE - - WELCOME_ROOM_NOTIFY_DEPARTURE volumes: - ${PWD}/config/:/bot/config - ${PWD}/credentials.json:/bot/credentials.json diff --git a/modules/welcome_room.py b/modules/welcome_room.py index e15183d..f88104e 100644 --- a/modules/welcome_room.py +++ b/modules/welcome_room.py @@ -1,5 +1,5 @@ -import os import itertools +import shlex from modules.common.module import BotModule @@ -11,62 +11,94 @@ class MatrixModule(BotModule): def __init__(self, name): super().__init__(name) - self.room_id = os.getenv("WELCOME_ROOMID") - self.last_welcome_room_user_count = 0 - self.last_welcome_room_users = [] - - # If the provided welcome message is a file path, read the file into - # the welcome message. Otherwise, use the variable data as the message. - if os.path.isfile(os.getenv("WELCOME_MESSAGE")): - with open(os.getenv("WELCOME_MESSAGE"), "r") as file: - self.welcome_message = file.read() - else: - self.welcome_message = os.getenv("WELCOME_MESSAGE") + self.enabled = False + self.rooms = dict() async def matrix_message(self, bot, room, event): - return + bot.must_be_owner(event) + args = shlex.split(event.body) + args.pop(0) + # Message body possibilities: + # ["welcome_message", "notify_departure", "settings"] + if args[0] == "welcome_message": + users = bot.client.rooms[room.room_id].users + welcome_settings = { + "last_room_user_count": len(users), + "last_room_users": [username for username in users], + "welcome_message": event.body.split("welcome_message", 1)[1], + "notify_departure": False + } + self.rooms[room.room_id] = welcome_settings + bot.save_settings() + await bot.send_text(room, "Welcome settings configured: {settings}".format(settings=welcome_settings)) + elif args[0] == "notify_departure": + notify_departure = True if args[1] == "True" else False + self.rooms[room.room_id]["notify_departure"] = notify_departure + bot.save_settings() + await bot.send_text(room, "notify_departure set to {setting}".format(setting=notify_departure)) + elif args[0] == "settings": + await bot.send_text(room, "Welcome settings: {settings}".format(settings=self.rooms[room.room_id])) + + def get_settings(self): + data = super().get_settings() + data["rooms"] = self.rooms + return data + + def set_settings(self, data): + super().set_settings(data) + if data.get("rooms"): + self.rooms = data["rooms"] async def matrix_poll(self, bot, pollcount): - newcomer_room_users = bot.client.rooms[self.room_id].users - newcomer_room_user_delta = self.get_user_list_delta( - newcomer_room_users, - self.last_welcome_room_users - ) - self.last_welcome_room_user_count = len(newcomer_room_users) - self.last_welcome_room_users = [u for u in newcomer_room_users] + for room_id in self.rooms: + if room_id in bot.client.rooms: + welcome_parameters = self.rooms[room_id] + newcomer_room_users = bot.client.rooms[room_id].users + newcomer_room_user_delta = self.get_user_list_delta( + newcomer_room_users, + welcome_parameters["last_room_users"] + ) + self.rooms[room_id]["last_room_user_count"] = len(newcomer_room_users) + self.rooms[room_id]["last_room_users"] = [u for u in newcomer_room_users] - if pollcount != 1: - new_users = newcomer_room_user_delta.get("recently_added", []) - if os.getenv("WELCOME_ROOM_NOTIFY_DEPARTURE", 0) and \ - len(newcomer_room_user_delta.get("recently_removed")) > 0: - for owner in bot.owners: - await bot.send_msg( - owner, - "Welcome Bot", - "User {left} left the welcome channel".format( - left=newcomer_room_user_delta.get( - "recently_removed") - ) + if pollcount != 1: + new_users = newcomer_room_user_delta.get("recently_added", []) + if welcome_parameters["notify_departure"] and \ + len(newcomer_room_user_delta.get("recently_removed")) > 0: + for owner in bot.owners: + await bot.send_msg( + owner, + "Welcome Bot", + "User {user_left} left {channel}".format( + user_left=newcomer_room_user_delta.get("recently_removed"), + channel=bot.client.rooms[room_id].display_name + ) + ) + await self.welcome_users( + new_users, + welcome_parameters["welcome_message"], + bot, + bot.client.rooms[room_id].display_name ) - await self.welcome_users(new_users, bot) def help(self): return "Poll for new users in the room and welcome them" - async def welcome_users(self, user_list, bot): + async def welcome_users(self, user_list, message, bot, roomname): for user in user_list: await bot.send_msg( user, "Welcome", - self.welcome_message + message ) if len(user_list) > 0: for owner in bot.owners: await bot.send_msg( owner, "Welcome Bot", - "Sent a welcome message to: {noobs}".format( - noobs=user_list + "Sent a welcome message from {channel} to: {users}".format( + users=user_list, + channel=roomname ) ) diff --git a/modules/welcome_server.py b/modules/welcome_server.py index b1a45fb..32857f0 100644 --- a/modules/welcome_server.py +++ b/modules/welcome_server.py @@ -1,5 +1,6 @@ import os import itertools +import shlex import requests from modules.common.module import BotModule @@ -15,21 +16,39 @@ class MatrixModule(BotModule): def __init__(self, name): super().__init__(name) + self.enabled = False self.access_token = os.getenv("MATRIX_ACCESS_TOKEN") - self.user_query_url = os.getenv("MATRIX_SERVER") + "/_synapse/admin/v2/users" - self.last_server_user_count = 0 - self.last_server_users = [] - - # If the provided welcome message is a file path, read the file into - # the welcome message. Otherwise, use the variable data as the message. - if os.path.isfile(os.getenv("WELCOME_MESSAGE")): - with open(os.getenv("WELCOME_MESSAGE"), "r") as file: - self.welcome_message = file.read() - else: - self.welcome_message = os.getenv("WELCOME_MESSAGE") + self.welcome_settings = dict() async def matrix_message(self, bot, room, event): - return + bot.must_be_owner(event) + args = shlex.split(event.body) + args.pop(0) + # Message body possibilities: + # ["welcome_message", "query_host", "settings"] + if args[0] == "welcome_message": + users = bot.client.rooms[room.room_id].users + welcome_settings = { + "last_server_user_count": len(users), + "last_server_users": [username for username in users], + "welcome_message": event.body.split("welcome_message", 1)[1], + "user_query_host": os.getenv("MATRIX_SERVER") + } + self.welcome_settings = welcome_settings + bot.save_settings() + await bot.send_text(room, "Welcome settings configured for server: {settings}".format(settings=welcome_settings)) + elif args[0] == "settings": + await bot.send_text(room, "Welcome settings for server: {settings}".format(settings=self.welcome_settings)) + + def get_settings(self): + data = super().get_settings() + data["welcome_settings"] = self.welcome_settings + return data + + def set_settings(self, data): + super().set_settings(data) + if data.get("welcome_settings"): + self.welcome_settings = data["welcome_settings"] async def matrix_poll(self, bot, pollcount): server_user_delta = self.get_server_user_delta() @@ -39,25 +58,29 @@ class MatrixModule(BotModule): if pollcount != 1: new_users = [u.get("name") for u in server_user_delta.get( "recently_added", [])] - await self.welcome_users(new_users, bot) + await self.welcome_users( + new_users, + self.welcome_settings["welcome_message"], + bot + ) def help(self): return "Poll for new users on the server and welcome them" - async def welcome_users(self, user_list, bot): + async def welcome_users(self, user_list, message, bot): for user in user_list: await bot.send_msg( user, "Welcome", - self.welcome_message + message ) if len(user_list) > 0: for owner in bot.owners: await bot.send_msg( owner, "Welcome Bot", - "Sent a welcome message to: {new_users}".format( - new_users=user_list + "Sent a welcome message to new server user(s): {users}".format( + users=user_list ) ) @@ -88,7 +111,7 @@ class MatrixModule(BotModule): since the last run. """ user_data = requests.get( - self.user_query_url, + self.welcome_settings["user_query_host"] + "/_synapse/admin/v2/users", headers={"Authorization": "Bearer {token}".format( token=self.access_token )} @@ -97,8 +120,8 @@ class MatrixModule(BotModule): user_list = user_data_json.get("users", []) user_delta = self.get_user_list_delta( user_list, - self.last_server_users + self.welcome_settings["last_server_users"] ) - self.last_server_users = [u for u in user_list] - self.last_server_user_count = user_data_json.get("total") + self.welcome_settings["last_server_users"] = [u for u in user_list] + self.welcome_settings["last_server_user_count"] = user_data_json.get("total") return user_delta diff --git a/welcome.md b/welcome.md deleted file mode 100644 index a67a121..0000000 --- a/welcome.md +++ /dev/null @@ -1 +0,0 @@ -Welcome to the server. From 9c80395bffb770653e94d45d7bdf9ce8d99f534d Mon Sep 17 00:00:00 2001 From: Jackson Egan Date: Mon, 14 Sep 2020 23:52:12 -0400 Subject: [PATCH 4/6] Add welcome modules ro README --- README.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/README.md b/README.md index e1afbf2..f364f3b 100644 --- a/README.md +++ b/README.md @@ -161,6 +161,25 @@ This module is for interacting with the room that the commands are being execute * !room kicked: Lists the kicked users and their provided reason * !room state [event type] [optional state key]: Gets a state event with given event type and optional state key +### Welcome to Room + +When configured in a room, the bot will monitor a room for new users and send new users a welcome message 1:1. It will then notify bot owners of the new user. It will also, optionally, notify of user departure. + +Commands: + +* !welcome_room welcome_message [message] Sets the welcome message, along with other variables needed to detect new users. +* !welcome_room notify_departure [True/False] Sets whether bot owners will be notified of departure from room. Defaults to False. +* !welcome_room settings Shows the current settings for the welcome_room module. + +### Welcome to Server + +As a server admin, the bot will monitor new user creation on the server and send the welcome message to new users 1:1. It will then notify bot owners of the new user. + +Commands: + +* !welcome_server welcome_message [message] Sets the welcome message, along with other variables needed to detect new users. +* !welcome_server settings Shows current settings for the welcome_server module + ### Slow polling services These have the same usage - you can add one or more accounts to a room and bot polls the accounts. From b41aaf3c7243b831589b7374562a29730eaea2e6 Mon Sep 17 00:00:00 2001 From: Jackson Egan Date: Mon, 14 Sep 2020 23:53:33 -0400 Subject: [PATCH 5/6] Remove vestigial welcome volume mount --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index c01bb52..ee49d83 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,6 +18,5 @@ services: - ${PWD}/config/:/bot/config - ${PWD}/credentials.json:/bot/credentials.json - ${PWD}/token.pickle:/bot/token.pickle - - ${PWD}/welcome.md:/bot/welcome.md stop_signal: SIGINT From b63c1357815465ebcfbe386574e338443ccc036d Mon Sep 17 00:00:00 2001 From: Jackson Egan Date: Tue, 15 Sep 2020 10:05:12 -0400 Subject: [PATCH 6/6] Fix server user detection to prevent spamming existing users. --- modules/welcome_server.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/modules/welcome_server.py b/modules/welcome_server.py index 32857f0..6c13cf6 100644 --- a/modules/welcome_server.py +++ b/modules/welcome_server.py @@ -27,10 +27,10 @@ class MatrixModule(BotModule): # Message body possibilities: # ["welcome_message", "query_host", "settings"] if args[0] == "welcome_message": - users = bot.client.rooms[room.room_id].users + users = self.get_server_user_list() welcome_settings = { "last_server_user_count": len(users), - "last_server_users": [username for username in users], + "last_server_users": users, "welcome_message": event.body.split("welcome_message", 1)[1], "user_query_host": os.getenv("MATRIX_SERVER") } @@ -51,13 +51,12 @@ class MatrixModule(BotModule): self.welcome_settings = data["welcome_settings"] async def matrix_poll(self, bot, pollcount): - server_user_delta = self.get_server_user_delta() + server_user_delta = self.get_server_user_delta(bot) # The first time this bot runs it will detect all users as new, so # allow it to one once without taking action. if pollcount != 1: - new_users = [u.get("name") for u in server_user_delta.get( - "recently_added", [])] + new_users = server_user_delta.get("recently_added", []) await self.welcome_users( new_users, self.welcome_settings["welcome_message"], @@ -68,6 +67,9 @@ class MatrixModule(BotModule): return "Poll for new users on the server and welcome them" async def welcome_users(self, user_list, message, bot): + if len(user_list) > 1: + print(user_list) + return for user in user_list: await bot.send_msg( user, @@ -105,11 +107,22 @@ class MatrixModule(BotModule): "recently_added": recently_added } - def get_server_user_delta(self): + def get_server_user_delta(self, bot): """ Get the full user list for the server and return the change in users since the last run. """ + user_list = self.get_server_user_list() + user_delta = self.get_user_list_delta( + user_list, + self.welcome_settings["last_server_users"] + ) + self.welcome_settings["last_server_users"] = [u for u in user_list] + self.welcome_settings["last_server_user_count"] = len(user_list) + bot.save_settings() + return user_delta + + def get_server_user_list(self): user_data = requests.get( self.welcome_settings["user_query_host"] + "/_synapse/admin/v2/users", headers={"Authorization": "Bearer {token}".format( @@ -117,11 +130,5 @@ class MatrixModule(BotModule): )} ) user_data_json = user_data.json() - user_list = user_data_json.get("users", []) - user_delta = self.get_user_list_delta( - user_list, - self.welcome_settings["last_server_users"] - ) - self.welcome_settings["last_server_users"] = [u for u in user_list] - self.welcome_settings["last_server_user_count"] = user_data_json.get("total") - return user_delta + user_list = [u.get("name") for u in user_data_json.get("users", [])] + return user_list