Рассылка сообщений всем пользователям бота Python(pyTelegramBotApi)
Имеется бот, в котором реализована форма регистрации и сохранения пользователей в БД(MySQL), есть user_id в котором сохраняется id пользователя. Задача в том, чтобы сделать рассылку всем пользователям бота. Не могу разобраться как это сделать. user_id == chat_id не работает или же не так что то сам сделал. Спасибо за Ваше внимание
Ответы (2 шт):
Автор решения: shalor1k
→ Ссылка
Попробуйте сохранить user_id в список. После чего пройтись по всем user_id и выполнить send_message
Автор решения: Ян Морозов
→ Ссылка
Было бы неплохо увидеть код. Попробуйте для начала загрузить данные с базы в список потом пройдись циклом. в декораторе соединения поставьте свои данные
import pymysql
def view_data(connection, table_name):
""" Показать таблицу базы данных"""
with connection.cursor() as cursor:
select_all_data = f"SELECT * FROM {table_name}"
cursor.execute(select_all_data)
rows = cursor.fetchall()
print(f'Данные из таблицы {table_name}')
for row in rows:
print(row)
print('#' * 30)
def connection_func(func):
"""Декоратор для соебинения с базой данных"""
def camel(*args, **kwargs):
try:
connection = pymysql.connect(
host=host,
port=port,
user=user,
password=password,
database=db_name,
cursorclass=pymysql.cursors.DictCursor
)
print('successfully connected...')
print('#' * 30)
try:
result = func(connection, *args, **kwargs)
return result
finally:
connection.close()
except Exception as exp:
print('Connection refused...')
print(f'FAIL{exp}')
return camel
def upload_users_data(connection):
"""Выгрузка данных пользователя из базы данных"""
with connection.cursor() as cursor:
select_all_data = "SELECT * FROM `users`"
cursor.execute(select_all_data)
rows = cursor.fetchall()
print(f'•• DATA USERS\n'
f'{"Name":<10} {"ID":<10} Progress')
return rows
for user_id in user_id_list:
bot.send_message(user_id, “текст рассылки”)