Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Как узнать что от твоего бота отписались telebot python

Айнур Муллануров Ученик (2), открыт 3 недели назад
В общем пишу бота с удобной рассылкой сделал каждому юзеру статус при первом входе статус user если виду определенное ключевое слово я становлюсь админом и могу делать рассылку но что мне делать с теми пользователями которые заблокировали бота? Хочу что бы была статистика всех зареганых и тех кто заблокал и тех кто остался что бы при рассылке те кто отписались их статус в бд менялся на blocked и при последующих рассылках они просто скипались но не понимаю как это сделать
Дополнен 3 недели назад
Дайте сыллочку на необходимый мне ресурс или просто обьяните простыми словами а лучше напиши как код примерно должен выглядить
1 ответ
Вкусный Персик Профи (829) 3 недели назад
Для того чтобы узнать, кто отписался от вашего бота в Telegram, вы можете использовать метод getChatMember из Telegram Bot API. Этот метод позволяет получить информацию о пользователе в чате, включая его статус (например, "left" - пользователь покинул чат).

Вы можете регулярно вызывать этот метод для всех пользователей, которым вы отправляли рассылку, и обновлять статусы пользователей в вашей базе данных на основе полученной информации.

Пример кода на Python с использованием библиотеки python-telegram-bot:

python
from telegram import Bot
from telegram.error import TelegramError

bot = Bot('YOUR_BOT_TOKEN')

def update_user_status(user_id):
try:
chat_member = bot.get_chat_member(chat_id='YOUR_CHAT_ID', user_id=user_id)
status = chat_member.status
if status == 'left':
# Обновляем статус пользователя в базе данных на 'blocked'
update_user_in_database(user_id, 'blocked')
except TelegramError:
# Обработка ошибок при вызове метода get_chat_member
pass

# Пример использования
user_ids = [1, 2, 3] # Список идентификаторов пользователей для обновления статусов
for user_id in user_ids:
update_user_status(user_id)


В этом примере мы используем метод get_chat_member, чтобы получить информацию о каждом пользователе по его идентификатору user_id. Затем мы проверяем статус пользователя и, если он равен 'left', обновляем его статус в базе данных на 'blocked'.

Обратите внимание, что вам нужно будет заменить 'YOUR_BOT_TOKEN' на токен вашего бота и 'YOUR_CHAT_ID' на идентификатор чата, в котором вы отправляли рассылку.

Надеюсь, это поможет вам реализовать функционал для обновления статусов пользователей в вашей базе данных.
Айнур МуллануровУченик (2) 3 недели назад
Я использую именно telegramBotApi(telebot) там есть что то подобное? Спасибо за ответ
Айнур МуллануровУченик (2) 3 недели назад
И я юзаю sqlite3 для бд как я понял мне просто нужно вывести информацию о каждом пользователе и если у кого то найдено left то менять значения статуса?
Вкусный Персик Профи (829) Айнур Муллануров, да
Похожие вопросы