• На форуме разрешено создавать темы только для пользователей, кто имеет группу «Продавец». Приобрести её можно здесь: https://dstock.biz/account/upgrades. Либо в телеграме https://t.me/DustDS

Статья Рассылка сообщений в боте Telegram (Python)

Irval

Главный Модератор
Главный Модератор

Irval

Главный Модератор
Главный Модератор
Статус
Оффлайн
Регистрация
31 Май 2019
Сообщения
245
Реакции
84
Доброго времени суток
По просьбе @thip76 я решил поделиться с вами интересным решением для Telegram бота, позволяющим делать простую рассылку сообщений во все открытые группы, в которые приглашен ваш бот. Для создания подобного бота понадобится библиотека Telebot для Python (подробнее о ней можно прочитать
Пожалуйста, авторизуйтесь для просмотра ссылки.
). Останавливаться на ее установке я не буду, это достаточно просто сделать с помощью pip или ручной установки.

Для работы бота понадобится создать 2 текстовых файла - groups.txt и admins.txt. В них будут храниться списки групп для рассылки и id пользователей, которые могут добавлять или удалять эти группы. Реализацию данных функций вы можете изменить под себя, если в это есть какая-либо необходимость. Исходный код бота на Python представлен ниже:
Python:
import telebot
import re
import datetime

bot = telebot.TeleBot('токен')

                
def is_admin(username):
    with open('admins.txt') as f:
        strings = f.read()
        return True if username in strings else False
def delete_group(group, message):
    with open('groups.txt') as f:
        strings = open("groups.txt").read()
        if group in strings:
            with open('groups.txt') as f:
                lines = f.readlines()
                pattern = re.compile(re.escape(group))
                with open('groups.txt', 'w') as f:
                    for line in lines:
                        result = pattern.search(line)
                        if result is None:
                            f.write(line)
            bot.send_message(message.chat.id, 'Группа успешно удалена!')
        else:
            bot.send_message(message.chat.id, 'Группа не найдена!')
def add_group(group, message):
    strings = open("groups.txt").read()
    if group in strings:
        bot.send_message(message.chat.id, 'Группа уже добавлена!')
    else:
        with open('groups.txt', 'a') as file:
            file.write('\n'+group)
        bot.send_message(message.chat.id, 'Группа успешно добавлена!')
def add_spam(text, message):
    try:
        with open('groups.txt') as f:
            lines = f.readlines()
            for group in lines:
                if group != '\n' and group != "":
                    bot.send_message(int(group), text)
        bot.send_message(message.chat.id, 'Успешно!')
    except Exception as er:
        print("Ошибка отправки спама :(\n"+str(er))
        
@bot.message_handler(commands=['start', 'id'])
def start_messages(message):
    if message.chat.type == "supergroup":
        if "/id" in message.text:
            bot.send_message(message.chat.id, "ID вашего чата: " + str(message.chat.id))
        if "/start" in message.text:
            add_group(str(message.chat.id), message)
        
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    if message.chat.type == "private":
        if is_admin(str(message.from_user.id)):
            if "/delete " in message.text:
                try:
                    group = message.text[8:]
                    delete_group(group,message)
                except Exception as er:
                    bot.send_message(message.chat.id, 'Ошибка во время выполнения скрипта!\n'+str(er))
            elif "/add " in message.text:
                group = message.text[5:]
                try:
                    add_group(group,message)
                except Exception as er:
                    bot.send_message(message.chat.id, 'Ошибка во время выполнения скрипта!\n'+str(er))

            elif "/spam " in message.text:
                text = message.text[6:]
                try:
                    add_spam(text,message)
                except Exception as er:
                    bot.send_message(message.chat.id, 'Ошибка во время выполнения скрипта!\n'+str(er))

bot.polling(none_stop=True, interval=0)

При желании можно добавить постоянную рассылку сообщений, например каждые 2-3 часа. Для этого нужно добавить в новый асинхронный поток проверку на прошедшее время и выполнение отправки нужного вам сообщения при ее прохождении. Если понадобится более подробно разъяснить, как это делается - можете отписать в тему или мне в личные сообщения.
 

thip76

Интересующийся

thip76

Интересующийся
Статус
Оффлайн
Регистрация
2 Май 2020
Сообщения
16
Реакции
5
Доброго времени суток
По просьбе @thip76 я решил поделиться с вами интересным решением для Telegram бота, позволяющим делать простую рассылку сообщений во все открытые группы, в которые приглашен ваш бот. Для создания подобного бота понадобится библиотека Telebot для Python (подробнее о ней можно прочитать
Пожалуйста, авторизуйтесь для просмотра ссылки.
). Останавливаться на ее установке я не буду, это достаточно просто сделать с помощью pip или ручной установки.

Для работы бота понадобится создать 2 текстовых файла - groups.txt и admins.txt. В них будут храниться списки групп для рассылки и id пользователей, которые могут добавлять или удалять эти группы. Реализацию данных функций вы можете изменить под себя, если в это есть какая-либо необходимость. Исходный код бота на Python представлен ниже:
Python:
import telebot
import re
import datetime

bot = telebot.TeleBot('токен')

              
def is_admin(username):
    with open('admins.txt') as f:
        strings = f.read()
        return True if username in strings else False
def delete_group(group, message):
    with open('groups.txt') as f:
        strings = open("groups.txt").read()
        if group in strings:
            with open('groups.txt') as f:
                lines = f.readlines()
                pattern = re.compile(re.escape(group))
                with open('groups.txt', 'w') as f:
                    for line in lines:
                        result = pattern.search(line)
                        if result is None:
                            f.write(line)
            bot.send_message(message.chat.id, 'Группа успешно удалена!')
        else:
            bot.send_message(message.chat.id, 'Группа не найдена!')
def add_group(group, message):
    strings = open("groups.txt").read()
    if group in strings:
        bot.send_message(message.chat.id, 'Группа уже добавлена!')
    else:
        with open('groups.txt', 'a') as file:
            file.write('\n'+group)
        bot.send_message(message.chat.id, 'Группа успешно добавлена!')
def add_spam(text, message):
    try:
        with open('groups.txt') as f:
            lines = f.readlines()
            for group in lines:
                if group != '\n' and group != "":
                    bot.send_message(int(group), text)
        bot.send_message(message.chat.id, 'Успешно!')
    except Exception as er:
        print("Ошибка отправки спама :(\n"+str(er))
      
@bot.message_handler(commands=['start', 'id'])
def start_messages(message):
    if message.chat.type == "supergroup":
        if "/id" in message.text:
            bot.send_message(message.chat.id, "ID вашего чата: " + str(message.chat.id))
        if "/start" in message.text:
            add_group(str(message.chat.id), message)
      
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
    if message.chat.type == "private":
        if is_admin(str(message.from_user.id)):
            if "/delete " in message.text:
                try:
                    group = message.text[8:]
                    delete_group(group,message)
                except Exception as er:
                    bot.send_message(message.chat.id, 'Ошибка во время выполнения скрипта!\n'+str(er))
            elif "/add " in message.text:
                group = message.text[5:]
                try:
                    add_group(group,message)
                except Exception as er:
                    bot.send_message(message.chat.id, 'Ошибка во время выполнения скрипта!\n'+str(er))

            elif "/spam " in message.text:
                text = message.text[6:]
                try:
                    add_spam(text,message)
                except Exception as er:
                    bot.send_message(message.chat.id, 'Ошибка во время выполнения скрипта!\n'+str(er))

bot.polling(none_stop=True, interval=0)

При желании можно добавить постоянную рассылку сообщений, например каждые 2-3 часа. Для этого нужно добавить в новый асинхронный поток проверку на прошедшее время и выполнение отправки нужного вам сообщения при ее прохождении. Если понадобится более подробно разъяснить, как это делается - можете отписать в тему или мне в личные сообщения.
Большое тебе Спасибо, ты хороший человек) Буду пытаться, отпишусь после
 

thip76

Интересующийся

thip76

Интересующийся
Статус
Оффлайн
Регистрация
2 Май 2020
Сообщения
16
Реакции
5
Большое тебе Спасибо, ты хороший человек) Буду пытаться, отпишусь после
Не хватило мозгов, питона поставил на винду 7х64,
библиотеки хуеки, смотрел этого хауди хо
, вес мозг короче вытрахал себе, даже эхобот не запустил, через пару дней может отойду еще раз попробую
 

Irval

Главный Модератор
Главный Модератор

Irval

Главный Модератор
Главный Модератор
Статус
Оффлайн
Регистрация
31 Май 2019
Сообщения
245
Реакции
84
Не хватило мозгов, питона поставил на винду 7х64,
библиотеки хуеки, смотрел этого хауди хо
, вес мозг короче вытрахал себе, даже эхобот не запустил, через пару дней может отойду еще раз попробую
Желаю удачи в освоении питона)
 
Сверху