Как сделать рассылку в телеграм боте?
Написал код, не могу понять, что именно неправильно.
Первая часть кода должна при активации /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 шт):
В данном случае бот ищет пользователя из списка joinedUser и пытается каждому отправить, но если человек отписался, то он не может этого сделать и не отсылает никому сообщения. При отписке пользователя от бота нужно удалять его из файла с ID, в коде такого нет.
Момент второй, при таком коде рассылку может делать любой пользователь бота, а не только админ, нужен ID админа и сверять, он ли посылает ему команду с рассылкой, если да, то уже идти по списку с ID и отправлять сообщения.
Сам только с этой проблемой разбираюсь, может ты уже решил эту проблему - буду рад услышать ответ ))
Думал, проблема очевидная, вы пропустили кавычку
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(' '):])