@Lynatik001

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

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

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

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

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

если нету такого списка подписчиков - или чего я там не помню вобще была ли кнопка подписатся перед тем как начать общение с ботом
Ответ написан
Комментировать
@kr_ilya
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

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

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

Похожие вопросы