Задать вопрос
@iliaaaaaaaaaaaaaa

Как сделать рассылку в телеграм боте?

Написал код, не могу понять, что именно неправильно.
Первая часть кода должна при активации /start записать id пользователя в joined.txt
Вторая часть кода:
Запускает рассылку текста всем id в joined.txt, если админ прописывает команду /special + текст
import telebot
bot = telebot.TeleBot('')
joinedFile = open("joined.txt", "r")
joinedUsers = set ()
for line in joinedFile:
	joinedUsers.add(line.strip())
joinedFile.close()

@bot.message_handler(commands=['start'])
def startjoin(message):
	if not str(message.chat.id) in joinedUsers:
		joinedFile = open("joined.txt", "a")
		joinedFile.write(str(message.chat.id) + "\n")
		joinedUsers.add(message.chat.id)

@bot.message_handler(commands=['special'])
def mess(message):
	for user in joinedUsers:
		bot.send_message(user, message.text[message.text.find(' '):])
  • Вопрос задан
  • 338 просмотров
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ответы на вопрос 2
@twistfire92
Python backend developer
Во-первых было бы разумнее пользоваться базами данных для таких случаев.
Во-вторых у вас после записи файл не закрывается (изучите конструкцию with open(...) as...), проблема может быть в этом.

Ну и скорее всего у вас только в приложенном коде опечатка и одних кавычек не хватает.

Да и у телеги есть ограничения на отправку сообщений за промежуток времени.
Ответ написан
Комментировать
Zagir-vip
@Zagir-vip
Web dev, Game dev, app dev, Разработчик на Python!
В команде:
@bot.message_handler(commands=['special'])
def mess(message):
  for user in joinedUsers:
    bot.send_message(user, message.text[message.text.find(' '):])

Вы открыли файл joinedUsers и закрыли попробуйте этот код:

@bot.message_handler(commands=['special'])
def mess(message):
  joinedFile = open("joined.txt", "r")
  joinedUsers = set ()
  for user in joinedUsers:
    bot.send_message(user, message.text[message.text.find(' '):])


если не работает скиньте пожалуйста ошибку или свяжитесь со мной в дискорде: Xpeawey#6098
Ответ написан
Ваш ответ на вопрос

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

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