Не понятно в какой БД у вас хранятся id
, покажу как можно опросить пользователей используя библиотеку requests
import requests
import time
token = 'TOKEN'
ids = ['864681328', '864681123', '864681229', '864681608', '864687548', '864681222', '864684213']
for x in ids:
r = requests.get(f'https://api.telegram.org/bot{token}/sendMessage?chat_id={x}&text=привет')
if r.json()['ok'] is False:
print(x) # Вывод id чата, который либо заблокировал, либо не найден
time.sleep(0.2) # на всякий случай добавляем небольшую паузу, чтобы не словить антифлуд
вообще, если бот заблокирован, то в ответ на get
запрос телеграм отдает ответ:
{'ok': False, 'error_code': 403, 'description': 'Forbidden: bot was blocked by the user'}
а, к примеру, если чат не найден, то:
{'ok': False, 'error_code': 400, 'description': 'Bad Request: chat not found'}
по этому можете цепляться и за error_code
и за description
, как вам удобнее. Так же имейте ввиду, что если бот не заблокирован, то пользователю придет сообщение привет
(можете изменить) от бота.
UPD
Если хотите указать parse_more
и отправлять ссылку, то можете переделать код так:
import requests
import time
token = 'TOKEN'
ids = ['111111111', '222222222', '333333333']
url = '<a href="http://www.example.com/">Это ссылка на мой сайт</a>'
for x in ids:
params = {"chat_id": x, "text": url, "parse_mode": "HTML"}
r = requests.get(f'https://api.telegram.org/bot{token}/sendMessage', params)
if r.json()['ok'] is False:
print(x)
time.sleep(0.2)