@Lynatik001

Как собрать всю подписоту бота, и отправить им личное сообщение(от бота)?

Использую библиотеку Telegraf - и что-то в документации не могу найти даже как отослать личное сообщение.
Да и команду что б вернула список подписчиков. тоже пока не нашел.

И как лучше всего реализовать?
Запихивать в бд которому уже отослал? - если например аудитория бота 3к людей. - то она может же и прерватся, не заново же тем же пересылать?

Или есть какие пути по проще?:)
  • Вопрос задан
  • 138 просмотров
Решения вопроса 2
@Lynatik001 Автор вопроса
bot.telegram.sendMessage(iduser, `Привет `);

Вот только как теперь узнать всех пользователей. что когда либо общались с ботом.

если нету такого списка подписчиков - или чего я там не помню вобще была ли кнопка подписатся перед тем как начать общение с ботом
Ответ написан
@Energy2
Telegram bot api не предоставляет возможность получить список пользователей, которые когда-либо обращались к боту. Все рассылки делаются с использованием базы данных, которая никак не связана с серверами телеграм. Данные в такую базу заносятся из скрипта бота, зачастую при старте бота. Т.е данные о пользователях нужно собирать самому.
И еще. Бот НЕ может первым начать диалог с пользователем. Человек первый должен написать боту.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@DTPlayer
# -*- coding: utf-8 -*-
import sett
import telebot
import random
import menu
from telebot import types
import time
import traceback

bot = telebot.TeleBot(sett.token)

joinedFile = open('/root/users.txt', 'r')
joinedUser = set()
for line in joinedFile:
    joinedUser.add(line.strip())
joinedFile.close()

@bot.message_handler(commands=['start'])
def start(message):
	try:
		if not str(message.chat.id) in joinedUser:
			file = open('/root/users.txt', 'a')
			file.write(str(message.chat.id) + '\n')
			file.close()
	except Exception as e:
		print(e)
		bot.send_message(sett.admin_id, 'Произошла ошибка, отправьте кодеру!!!\n'+str(e)+'')

@bot.message_handler(commands=['spam'])
def spam(message):
    try:
        if message.chat.id == sett.admin_id:
            for user in joinedUser:
                bot.send_message(user, message.text[message.text.find(' '):])
    except Exception as e:
        print(e)
        bot.send_message(sett.admin_id, 'Произошла ошибка, отправьте кодеру!!!\n'+str(e)+'')

@bot.message_handler(commands=['stats'])
def stats(message):
    try:
        if message.chat.id == sett.admin_id:
            joinedFile = open('/root/users.txt', 'r')
            bot.send_message(message.chat.id, 'Пользователей: *'+str(len(joinedFile.readlines()))'*, parse_mode='markdown')
            joinedFile.close
    except Exception as e:
        print(e)
        bot.send_message(sett.admin_id, 'Произошла ошибка, отправьте кодеру!!!\n'+str(e)+'')

/start - если нету id, его записываьт
/spam - отправка всем сообщения
/stats - кол-во пользователей в боте
Код на python, но от js толком не отличается
Ответ написан
qant
@qant
programer
На инглише, но вдруг https://dev.to/rizkyrajitha/get-notifications-with...

https://core.telegram.org/bots/api#sendmessage

Но как мне кажется низя ничего никому слать пока сам юзер не инициировал бота
Ответ написан
Ваш ответ на вопрос

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

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