Python // автопиар для автоматической рассылки по беседам каждые 15 минут

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Пользователь
Регистрация
26 Апр 2025
Сообщения
322
Дайте пожалуйста код на бота автопиар сообщество, который будет присылать во все беседы каждые 15 минут рассылку, буду благодарен :))


(код желательно Python)
 
Активный
Регистрация
12 Фев 2024
Сообщения
234
Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
from threading import Thread

# Настройки бота
VK_TOKEN = "ВАШ_ТОКЕН_ГРУППЫ"  # Токен группы VK
GROUP_ID = 123456789  # ID вашей группы (без минуса)
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"  # Текст рассылки
ATTACHMENTS = "photo-123456789_456239048"  # Прикрепления (опционально)
INTERVAL = 900  # Интервал рассылки в секундах (15 минут = 900 сек)

# Список ID бесед, куда будет идти рассылка
CHAT_IDS = [
    2000000001,
    2000000002,
    2000000003
]

class VkBot:
    def __init__(self, token, group_id):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.longpoll = VkBotLongPoll(self.vk_session, group_id)
        self.running = True

    def send_message(self, chat_id, message, attachments=None):
        try:
            self.vk.messages.send(
                chat_id=chat_id - 2000000000,  # Преобразование ID беседы
                message=message,
                attachment=attachments,
                random_id=0
            )
            print(f"Сообщение отправлено в беседу {chat_id}")
        except Exception as e:
            print(f"Ошибка при отправке в {chat_id}: {e}")

    def start_polling(self):
        while self.running:
            try:
                for event in self.longpoll.listen():
                    # Здесь можно обрабатывать входящие сообщения
                    pass
            except Exception as e:
                print(f"Ошибка в longpoll: {e}")
                time.sleep(10)

    def start_auto_posting(self):
        while self.running:
            for chat_id in CHAT_IDS:
                self.send_message(chat_id, MESSAGE_TEXT, ATTACHMENTS)
                time.sleep(1)  # Небольшая задержка между отправками
            time.sleep(INTERVAL)

    def stop(self):
        self.running = False

if __name__ == "__main__":
    bot = VkBot(VK_TOKEN, GROUP_ID)
    
    # Запускаем longpoll в отдельном потоке
    poll_thread = Thread(target=bot.start_polling)
    poll_thread.start()
    
    # Запускаем авто-рассылку в основном потоке
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.stop()
        poll_thread.join()
 
Пользователь
Регистрация
26 Апр 2025
Сообщения
322
Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
from threading import Thread

# Настройки бота
VK_TOKEN = "ВАШ_ТОКЕН_ГРУППЫ"  # Токен группы VK
GROUP_ID = 123456789  # ID вашей группы (без минуса)
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"  # Текст рассылки
ATTACHMENTS = "photo-123456789_456239048"  # Прикрепления (опционально)
INTERVAL = 900  # Интервал рассылки в секундах (15 минут = 900 сек)

# Список ID бесед, куда будет идти рассылка
CHAT_IDS = [
    2000000001,
    2000000002,
    2000000003
]

class VkBot:
    def __init__(self, token, group_id):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.longpoll = VkBotLongPoll(self.vk_session, group_id)
        self.running = True

    def send_message(self, chat_id, message, attachments=None):
        try:
            self.vk.messages.send(
                chat_id=chat_id - 2000000000,  # Преобразование ID беседы
                message=message,
                attachment=attachments,
                random_id=0
            )
            print(f"Сообщение отправлено в беседу {chat_id}")
        except Exception as e:
            print(f"Ошибка при отправке в {chat_id}: {e}")

    def start_polling(self):
        while self.running:
            try:
                for event in self.longpoll.listen():
                    # Здесь можно обрабатывать входящие сообщения
                    pass
            except Exception as e:
                print(f"Ошибка в longpoll: {e}")
                time.sleep(10)

    def start_auto_posting(self):
        while self.running:
            for chat_id in CHAT_IDS:
                self.send_message(chat_id, MESSAGE_TEXT, ATTACHMENTS)
                time.sleep(1)  # Небольшая задержка между отправками
            time.sleep(INTERVAL)

    def stop(self):
        self.running = False

if __name__ == "__main__":
    bot = VkBot(VK_TOKEN, GROUP_ID)
   
    # Запускаем longpoll в отдельном потоке
    poll_thread = Thread(target=bot.start_polling)
    poll_thread.start()
   
    # Запускаем авто-рассылку в основном потоке
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.stop()
        poll_thread.join()
OFFTOP

он будет сохранять ID бесед, если там например кто-то напишет какое то сообщение и так далее?

 
Активный
Регистрация
12 Фев 2024
Сообщения
234
OFFTOP

он будет сохранять ID бесед, если там например кто-то напишет какое то сообщение и так далее?

Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import json
from threading import Thread
from pathlib import Path

# Настройки бота
VK_TOKEN = "ВАШ_ТОКЕН_ГРУППЫ"  # Токен группы VK
GROUP_ID = 123456789  # ID вашей группы (без минуса)
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"  # Текст рассылки
ATTACHMENTS = "photo-123456789_456239048"  # Прикрепления (опционально)
INTERVAL = 900  # Интервал рассылки в секундах (15 минут = 900 сек)
CHATS_FILE = "saved_chats.json"  # Файл для сохранения ID бесед

class VkBot:
    def __init__(self, token, group_id):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.longpoll = VkBotLongPoll(self.vk_session, group_id)
        self.running = True
        self.chat_ids = self.load_chats()
        
    def load_chats(self):
        """Загружает сохранённые ID бесед из файла"""
        try:
            if Path(CHATS_FILE).exists():
                with open(CHATS_FILE, 'r') as f:
                    return json.load(f)
        except Exception as e:
            print(f"Ошибка загрузки чатов: {e}")
        return []
    
    def save_chats(self):
        """Сохраняет ID бесед в файл"""
        try:
            with open(CHATS_FILE, 'w') as f:
                json.dump(self.chat_ids, f)
        except Exception as e:
            print(f"Ошибка сохранения чатов: {e}")
    
    def add_chat(self, chat_id):
        """Добавляет беседу в список, если её там нет"""
        if chat_id not in self.chat_ids:
            self.chat_ids.append(chat_id)
            self.save_chats()
            print(f"Добавлена новая беседа: {chat_id}")
    
    def send_message(self, chat_id, message, attachments=None):
        """Отправляет сообщение в указанную беседу"""
        try:
            self.vk.messages.send(
                chat_id=chat_id - 2000000000,  # Преобразование ID беседы
                message=message,
                attachment=attachments,
                random_id=0
            )
            print(f"Сообщение отправлено в беседу {chat_id}")
        except Exception as e:
            print(f"Ошибка при отправке в {chat_id}: {e}")
    
    def start_polling(self):
        """Обрабатывает входящие сообщения и сохраняет беседы"""
        while self.running:
            try:
                for event in self.longpoll.listen():
                    if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat:
                        chat_id = event.chat_id + 2000000000  # Получаем полный ID беседы
                        self.add_chat(chat_id)
            except Exception as e:
                print(f"Ошибка в longpoll: {e}")
                time.sleep(10)
    
    def start_auto_posting(self):
        """Запускает автоматическую рассылку"""
        while self.running:
            if self.chat_ids:
                print(f"Начинаю рассылку в {len(self.chat_ids)} бесед...")
                for chat_id in self.chat_ids:
                    self.send_message(chat_id, MESSAGE_TEXT, ATTACHMENTS)
                    time.sleep(1)  # Небольшая задержка между отправками
            else:
                print("Нет сохранённых бесед для рассылки")
            time.sleep(INTERVAL)
    
    def stop(self):
        """Останавливает бота"""
        self.running = False
        self.save_chats()

if __name__ == "__main__":
    bot = VkBot(VK_TOKEN, GROUP_ID)
    
    # Запускаем longpoll в отдельном потоке
    poll_thread = Thread(target=bot.start_polling)
    poll_thread.start()
    
    # Запускаем авто-рассылку в основном потоке
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.stop()
        poll_thread.join()
 
Пользователь
Регистрация
26 Апр 2025
Сообщения
322
Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import json
from threading import Thread
from pathlib import Path

# Настройки бота
VK_TOKEN = "ВАШ_ТОКЕН_ГРУППЫ"  # Токен группы VK
GROUP_ID = 123456789  # ID вашей группы (без минуса)
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"  # Текст рассылки
ATTACHMENTS = "photo-123456789_456239048"  # Прикрепления (опционально)
INTERVAL = 900  # Интервал рассылки в секундах (15 минут = 900 сек)
CHATS_FILE = "saved_chats.json"  # Файл для сохранения ID бесед

class VkBot:
    def __init__(self, token, group_id):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.longpoll = VkBotLongPoll(self.vk_session, group_id)
        self.running = True
        self.chat_ids = self.load_chats()
       
    def load_chats(self):
        """Загружает сохранённые ID бесед из файла"""
        try:
            if Path(CHATS_FILE).exists():
                with open(CHATS_FILE, 'r') as f:
                    return json.load(f)
        except Exception as e:
            print(f"Ошибка загрузки чатов: {e}")
        return []
   
    def save_chats(self):
        """Сохраняет ID бесед в файл"""
        try:
            with open(CHATS_FILE, 'w') as f:
                json.dump(self.chat_ids, f)
        except Exception as e:
            print(f"Ошибка сохранения чатов: {e}")
   
    def add_chat(self, chat_id):
        """Добавляет беседу в список, если её там нет"""
        if chat_id not in self.chat_ids:
            self.chat_ids.append(chat_id)
            self.save_chats()
            print(f"Добавлена новая беседа: {chat_id}")
   
    def send_message(self, chat_id, message, attachments=None):
        """Отправляет сообщение в указанную беседу"""
        try:
            self.vk.messages.send(
                chat_id=chat_id - 2000000000,  # Преобразование ID беседы
                message=message,
                attachment=attachments,
                random_id=0
            )
            print(f"Сообщение отправлено в беседу {chat_id}")
        except Exception as e:
            print(f"Ошибка при отправке в {chat_id}: {e}")
   
    def start_polling(self):
        """Обрабатывает входящие сообщения и сохраняет беседы"""
        while self.running:
            try:
                for event in self.longpoll.listen():
                    if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat:
                        chat_id = event.chat_id + 2000000000  # Получаем полный ID беседы
                        self.add_chat(chat_id)
            except Exception as e:
                print(f"Ошибка в longpoll: {e}")
                time.sleep(10)
   
    def start_auto_posting(self):
        """Запускает автоматическую рассылку"""
        while self.running:
            if self.chat_ids:
                print(f"Начинаю рассылку в {len(self.chat_ids)} бесед...")
                for chat_id in self.chat_ids:
                    self.send_message(chat_id, MESSAGE_TEXT, ATTACHMENTS)
                    time.sleep(1)  # Небольшая задержка между отправками
            else:
                print("Нет сохранённых бесед для рассылки")
            time.sleep(INTERVAL)
   
    def stop(self):
        """Останавливает бота"""
        self.running = False
        self.save_chats()

if __name__ == "__main__":
    bot = VkBot(VK_TOKEN, GROUP_ID)
   
    # Запускаем longpoll в отдельном потоке
    poll_thread = Thread(target=bot.start_polling)
    poll_thread.start()
   
    # Запускаем авто-рассылку в основном потоке
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.stop()
        poll_thread.join()
ща проверю, рабочий или неь
 
Активный
Регистрация
12 Фев 2024
Сообщения
234
извините, просто в этом и суть автопиара, то что он без админки работает, ну хз для кого как
Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import json
from threading import Thread
from pathlib import Path

# Настройки
VK_TOKEN = "ВАШ_ТОКЕН_ПОЛЬЗОВАТЕЛЯ"  # Токен пользователя (не группы!)
USER_ID = 123456789  # Ваш ID пользователя
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"
INTERVAL = 900  # 15 минут
CHATS_FILE = "saved_chats.json"

class VkUserBot:
    def __init__(self, token, user_id):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.user_id = user_id
        self.running = True
        self.chat_ids = self.load_chats()
        
    def load_chats(self):
        try:
            if Path(CHATS_FILE).exists():
                with open(CHATS_FILE, 'r') as f:
                    return json.load(f)
        except Exception as e:
            print(f"Ошибка загрузки чатов: {e}")
        return []
    
    def save_chats(self):
        try:
            with open(CHATS_FILE, 'w') as f:
                json.dump(self.chat_ids, f)
        except Exception as e:
            print(f"Ошибка сохранения чатов: {e}")
    
    def get_all_chats(self):
        """Получаем список всех бесед пользователя"""
        try:
            conversations = self.vk.messages.getConversations(count=200)['items']
            return [conv['conversation']['peer']['id'] for conv in conversations
                    if conv['conversation']['peer']['type'] == 'chat']
        except Exception as e:
            print(f"Ошибка получения бесед: {e}")
            return []
    
    def send_message(self, chat_id, message):
        """Отправка сообщения от имени пользователя"""
        try:
            self.vk.messages.send(
                peer_id=chat_id,
                message=message,
                random_id=0
            )
            print(f"Сообщение отправлено в {chat_id}")
            return True
        except vk_api.exceptions.ApiError as e:
            if e.code == 917:  # Нет доступа
                print(f"Нет доступа к беседе {chat_id}")
            else:
                print(f"Ошибка отправки: {e}")
            return False
    
    def start_auto_posting(self):
        """Авторассылка в беседы"""
        while self.running:
            active_chats = self.get_all_chats()
            
            if not active_chats:
                print("Нет доступных бесед")
                time.sleep(60)
                continue
                
            print(f"Начинаю рассылку в {len(active_chats)} бесед")
            
            for chat_id in active_chats:
                if chat_id not in self.chat_ids:
                    self.chat_ids.append(chat_id)
                    self.save_chats()
                
                self.send_message(chat_id, MESSAGE_TEXT)
                time.sleep(3)  # Задержка для избежания лимитов
                
            time.sleep(INTERVAL)

if __name__ == "__main__":
    bot = VkUserBot(VK_TOKEN, USER_ID)
    
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.save_chats()
        print("Бот остановлен")
 
Пользователь
Регистрация
26 Апр 2025
Сообщения
322
Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import json
from threading import Thread
from pathlib import Path

# Настройки
VK_TOKEN = "ВАШ_ТОКЕН_ПОЛЬЗОВАТЕЛЯ"  # Токен пользователя (не группы!)
USER_ID = 123456789  # Ваш ID пользователя
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"
INTERVAL = 900  # 15 минут
CHATS_FILE = "saved_chats.json"

class VkUserBot:
    def __init__(self, token, user_id):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.user_id = user_id
        self.running = True
        self.chat_ids = self.load_chats()
       
    def load_chats(self):
        try:
            if Path(CHATS_FILE).exists():
                with open(CHATS_FILE, 'r') as f:
                    return json.load(f)
        except Exception as e:
            print(f"Ошибка загрузки чатов: {e}")
        return []
   
    def save_chats(self):
        try:
            with open(CHATS_FILE, 'w') as f:
                json.dump(self.chat_ids, f)
        except Exception as e:
            print(f"Ошибка сохранения чатов: {e}")
   
    def get_all_chats(self):
        """Получаем список всех бесед пользователя"""
        try:
            conversations = self.vk.messages.getConversations(count=200)['items']
            return [conv['conversation']['peer']['id'] for conv in conversations
                    if conv['conversation']['peer']['type'] == 'chat']
        except Exception as e:
            print(f"Ошибка получения бесед: {e}")
            return []
   
    def send_message(self, chat_id, message):
        """Отправка сообщения от имени пользователя"""
        try:
            self.vk.messages.send(
                peer_id=chat_id,
                message=message,
                random_id=0
            )
            print(f"Сообщение отправлено в {chat_id}")
            return True
        except vk_api.exceptions.ApiError as e:
            if e.code == 917:  # Нет доступа
                print(f"Нет доступа к беседе {chat_id}")
            else:
                print(f"Ошибка отправки: {e}")
            return False
   
    def start_auto_posting(self):
        """Авторассылка в беседы"""
        while self.running:
            active_chats = self.get_all_chats()
           
            if not active_chats:
                print("Нет доступных бесед")
                time.sleep(60)
                continue
               
            print(f"Начинаю рассылку в {len(active_chats)} бесед")
           
            for chat_id in active_chats:
                if chat_id not in self.chat_ids:
                    self.chat_ids.append(chat_id)
                    self.save_chats()
               
                self.send_message(chat_id, MESSAGE_TEXT)
                time.sleep(3)  # Задержка для избежания лимитов
               
            time.sleep(INTERVAL)

if __name__ == "__main__":
    bot = VkUserBot(VK_TOKEN, USER_ID)
   
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.save_chats()
        print("Бот остановлен")
а зачем кстати ID пользователя, для чего?
 
Активный
Регистрация
12 Фев 2024
Сообщения
234
Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import json
from pathlib import Path

# Настройки (токен пользователя, не группы!)
VK_TOKEN = "ВАШ_ТОКЕН_ПОЛЬЗОВАТЕЛЯ" 
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"
INTERVAL = 900  # 15 минут
CHATS_FILE = "saved_chats.json"

class VkUserBot:
    def __init__(self, token):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.running = True
        self.chat_ids = self.load_chats()
        
    def load_chats(self):
        try:
            if Path(CHATS_FILE).exists():
                with open(CHATS_FILE, 'r') as f:
                    return json.load(f)
        except Exception as e:
            print(f"Ошибка загрузки чатов: {e}")
        return []
    
    # ... (остальные методы без изменений)

if __name__ == "__main__":
    bot = VkUserBot(VK_TOKEN)  # Теперь без USER_ID
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.save_chats()
 
Пользователь
Регистрация
26 Апр 2025
Сообщения
322
Python:
import vk_api
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import time
import json
from pathlib import Path

# Настройки (токен пользователя, не группы!)
VK_TOKEN = "ВАШ_ТОКЕН_ПОЛЬЗОВАТЕЛЯ"
MESSAGE_TEXT = "Привет! Подпишитесь на наше сообщество 😊"
INTERVAL = 900  # 15 минут
CHATS_FILE = "saved_chats.json"

class VkUserBot:
    def __init__(self, token):
        self.vk_session = vk_api.VkApi(token=token)
        self.vk = self.vk_session.get_api()
        self.running = True
        self.chat_ids = self.load_chats()
      
    def load_chats(self):
        try:
            if Path(CHATS_FILE).exists():
                with open(CHATS_FILE, 'r') as f:
                    return json.load(f)
        except Exception as e:
            print(f"Ошибка загрузки чатов: {e}")
        return []
  
    # ... (остальные методы без изменений)

if __name__ == "__main__":
    bot = VkUserBot(VK_TOKEN)  # Теперь без USER_ID
    try:
        bot.start_auto_posting()
    except KeyboardInterrupt:
        bot.save_chats()
почему тут токен пользователя
 
Сверху