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

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

Первая часть кода должна при активации /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(' '):])

Ответы (2 шт):

Автор решения: Anton Perov
  • В данном случае бот ищет пользователя из списка joinedUser и пытается каждому отправить, но если человек отписался, то он не может этого сделать и не отсылает никому сообщения. При отписке пользователя от бота нужно удалять его из файла с ID, в коде такого нет.

  • Момент второй, при таком коде рассылку может делать любой пользователь бота, а не только админ, нужен ID админа и сверять, он ли посылает ему команду с рассылкой, если да, то уже идти по списку с ID и отправлять сообщения.

Сам только с этой проблемой разбираюсь, может ты уже решил эту проблему - буду рад услышать ответ ))

→ Ссылка
Автор решения: Mars

Думал, проблема очевидная, вы пропустили кавычку

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(' '):])
→ Ссылка