@System04

Каким способом я могу отправить сообщение от человека в боте всем людям, что есть в базе sqlite3?

Есть список ID пользователей в sqlite3, один из пользователей, например, что-то написал, сообщение должны прийти всем пользователям, что есть в списке. Как это можно реализовать? Как ещё можно разрешить отправку всех типов сообщение, кроме текстового для всех?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@VinogradovDionis
Студент
@bot.message_handler(commands=['start','Меню'])
def start(message):
	
	connect = sqlite3.connect('users.db')
	cursor = connect.cursor()
	cursor.execute("""CREATE TABLE IF NOT EXISTS login_id(
		id INTEGER
	)""")
	connect.commit()

	people_id = message.from_user.id
	cursor.execute(f"SELECT id FROM login_id WHERE id = {people_id}")
	data = cursor.fetchone()
	if data is None:
		user_list = [message.from_user.id]
		cursor.execute("INSERT INTO login_id VALUES(?);",user_list)
		connect.commit()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
MinTnt
@MinTnt
1. Самое частое решение - пройтись for
Достать список id сделав fetchall по запросу вида "SELECT id FROM table WHERE id IS NOT NULL" и пройтись по нёму отправив сообщение.

2. Для разных типов, есть неплохой метод copy message в api telegram. Исключение - опросы. Их лучше или реализовывать через inline keyboard, или юзать метод forward message
Ответ написан
Комментировать
Apokaliepsis
@Apokaliepsis
Главное - задать правильный вопрос
Тоже столкнулся на днях с такой проблемой, как можно делать рассылку пользователям бота, id которых хранится в базе. Пока для себя нашёл два метода решения:
1) реализовать функционал внутри бота, где при необходимости рассылки с помощью нужной команды будет вызываться скрытый метод, который доступен только админу бота, с помощью чего и будет осуществляться рассылка;
2) разработать админку для бота, где можно будет гибко управлять рассылкой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы