Skip to content

Commit 7afc032

Browse files
committed
Feat: Automatically remove "user joined group" message in case user has been kicked
1 parent 4b6f241 commit 7afc032

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

tg_bot/modules/sql/users_sql.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,19 @@ def __repr__(self):
2727
return "<User {} ({})>".format(self.username, self.user_id)
2828

2929

30+
class RemovedUser(BASE):
31+
__tablename__ == "removed_user"
32+
user_id = Column(BigInteger, primary_key=True)
33+
chat_id = Column(String(14), primary_key=True)
34+
35+
def __init__(self, user_id, chat_id):
36+
self.user_id = user_id
37+
self.chat_id = str(chat_id)
38+
39+
def __repr__(self):
40+
return f"<RemovedUser {self.user_id} | {self.chat_id}>"
41+
42+
3043
class Chats(BASE):
3144
__tablename__ = "chats"
3245
chat_id = Column(String(14), primary_key=True)
@@ -72,6 +85,7 @@ def __repr__(self):
7285
Users.__table__.create(checkfirst=True)
7386
Chats.__table__.create(checkfirst=True)
7487
ChatMembers.__table__.create(checkfirst=True)
88+
RemovedUser.__table__.create(checkfirst=True)
7589

7690
INSERTION_LOCK = threading.RLock()
7791

@@ -197,6 +211,16 @@ def migrate_chat(old_chat_id, new_chat_id):
197211
ensure_bot_in_db()
198212

199213

214+
def remove_user(user_id, chat_id):
215+
with INSERTION_LOCK:
216+
user = SESSION.query(RemovedUser).get((user_id, chat_id))
217+
if not user:
218+
user = RemovedUser(user_id, chat_id)
219+
SESSION.add(user)
220+
SESSION.flush()
221+
SESSION.commit()
222+
223+
200224
def del_user(user_id):
201225
with INSERTION_LOCK:
202226
curr = SESSION.query(Users).get(user_id)

tg_bot/modules/welcome.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from telegram import Message, Chat, Update, Bot, User
77
from telegram import ParseMode, InlineKeyboardMarkup
88
from telegram.error import BadRequest
9-
from telegram.ext import MessageHandler, Filters, CommandHandler, run_async
9+
from telegram.ext import MessageHandler, Filters, CommandHandler, run_async, JobQueue
1010
from telegram.utils.helpers import mention_markdown, mention_html, escape_markdown
1111

1212
import tg_bot.modules.sql.users_sql as user_sql
@@ -255,8 +255,9 @@ def new_member(bot: Bot, update: Update):
255255
else:
256256
# Kicking the user because of the username
257257
user_id = new_mem.id
258-
message.reply_text("L'utente non ha uno username, quindi verrà rimosso.")
259258
chat.kick_member(user_id, until_date=time.time() + 300)
259+
user_sql.remove_user(user_id, chat.id) # Keep track of whom we removed and where
260+
bot.delete_message(chat.id, message.message_id) # Delete " user joined group" message
260261

261262
prev_welc = sql.get_clean_pref(chat.id)
262263
if prev_welc:

0 commit comments

Comments
 (0)