Почему не увеливается цифра в колонке?
Подскажите, пожалуйста, при добавлении, 2 свои аккаунтов, в группу телеграм, всё равно, цифра 1, в колонке new_chat_members. Мне нужно, сделать так, если пользователь, не пригласит, 40 контактов, в группу, не сможет, писать в группе. На одном сайте, мне написали так, цитирую "Обработчик кнопки, внутри проверка."
Это, фото, одного бота, как я, пытаюсь, сделать.
Фото Бд.
Бд код.
connection = sqlite3.connect("new_chat_members.db")
cursor = connection.cursor()
connection.execute('''CREATE TABLE IF NOT EXISTS USERS
(id INTEGER PRIMARY KEY NOT NULL, user_id INTEGER, chat_id INTEGER, name TEXT, username TEXT, new_chat_members INTEGER)''')
connection.commit()
class SQLither:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file)
self.cursor = self.connection.cursor()
def add_user(self, user_id, chat_id, name, username, new_chat_members):
with self.connection:
return self.cursor.execute("INSERT INTO 'users' (user_id, chat_id, name, username, new_chat_members) VALUES(?,?,?,?,?)", (user_id, chat_id, name, username, new_chat_members))
def user_exists(self, user_id, chat_id):
with self.connection:
result = self.cursor.execute("SELECT * FROM users WHERE user_id=? and chat_id=?", (user_id,chat_id,)).fetchall()
db = SQLither("new_chat_members.db")
Хендлер, при отправке сообщения, удаляет и устанавливает ограничения.
@dp.message_handler(content_types=['text', 'photo', 'video', 'document', 'audio', 'video_note', 'voice', 'animation', 'contact', 'dice', 'location', 'poll', 'sticker', 'venue'])
async def get_handler(message: types.Message):
user_id = message.from_user.id
username = message.from_user.username
chat_id = message.chat.id
first_name = message.from_user.first_name
last_name = message.from_user.last_name
name = message.from_user.full_name
ChatMember.status = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
ChatMemberUpdated.new_chat_member = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
#print(ChatMemberUpdated)
if not ChatMember.status in ChatMemberUpdated.new_chat_member.user:
keyboard = types.InlineKeyboardMarkup(row_width=1)
checkurl = types.InlineKeyboardButton(text='✅Я добавил(а) контакты', callback_data=f'captcha_member:{user_id}')
keyboard.add(checkurl)
try:
msg = await message.reply(f"Извините! <a href=\"tg://user?id={user_id}\">{name}</a>. \n<b>📢 Вам нужно добавить, 40 человек, прежде чем, Вы сможете, публиковать сообщения, в группе.</b>".format(message.from_user.id), disable_web_page_preview=True, parse_mode='html', reply_markup=keyboard)
asyncio.create_task(delete_message(msg, 180))
await message.delete()
await asyncio.sleep(2)
await bot.restrict_chat_member(message.chat.id, message.from_user.id, ChatPermissions(can_send_messages=False, can_send_media_messages=False, can_send_other_messages=False, can_add_web_page_previews=False, can_send_polls=False, can_pin_messages=False, can_invite_users=True))
except Exception as e:
print(e)
return
Обработчик кнопки, но при добавлении контактов, не, снимает ограничения.
@dp.callback_query_handler(text_startswith='captcha')
#@dp.callback_query_handler(text="captcha")
async def captcha_member(call: types.CallbackQuery):
user_id = str(call.from_user.id)
to_id = call.data.split(':')[1]
chat_id = call.message.chat.id
username = call.from_user.username
name = call.from_user.full_name
new_chat_members = len(call.message.new_chat_members)
ChatMemberMember.status = await bot.get_chat_member(chat_id=call.message.chat.id, user_id=call.from_user.id)
ChatMemberUpdated.new_chat_member = await bot.get_chat_member(chat_id=call.message.chat.id, user_id=call.from_user.id)
if ChatMemberUpdated.new_chat_member in ChatMemberMember.status and user_id in to_id:
await bot.restrict_chat_member(chat_id=call.message.chat.id, user_id=call.from_user.id, permissions=types.ChatPermissions(can_send_messages=True, can_send_media_messages=True, can_send_other_messages=True, can_add_web_page_previews=True, can_send_polls=True, can_pin_messages=True, can_invite_users=True, can_change_info=True, until_date=None))
if db.user_exists(user_id, chat_id):
db.add_to_db(call.from_user.id, chat_id, name, username, new_chat_members)
elif user_id in to_id:
await call.answer(text="Вы пригласили, меньше 40 или ни кого, не пригласили.", show_alert=True)
else:
await call.answer(text="Эта ссылка адресована другому пользователю", show_alert=True)
Этот, хендлер, считывает кто пригласил в группу, или сам присоединился, к группе.
@dp.message_handler(content_types=['new_chat_members'])
async def new_user_joined(message: types.Message):
user_id = message.from_user.id
username = message.from_user.username
name = message.from_user.full_name
chat_id = message.chat.id
new_chat_members = len(message.new_chat_members)
ChatMemberMember = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
ChatMemberUpdated.new_chat_member = await bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id)
if ChatMemberUpdated.new_chat_member:
if not db.user_exists(user_id, chat_id):
db.add_user(message.from_user.id, chat_id, name, username, new_chat_members)
return
Подскажите, как прописать, чтобы работало, долго, делаю, свой код, плохо, понимаю пайтов, всё, методом экспериментов и чтения документации, просмотров видео уроков, о пайтоне.