[python] Бот для рассылки

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

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

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


1735067223251.png
1735067291602.png

Если кто-то не хочешь скачивать даю исходный код тут
Python:
import vk_api
import time
import random
import logging
import os
from vk_api.exceptions import ApiError

# Настройки (лучше вынести в отдельный файл)
TOKEN = ""
GROUP_ID = ""
MESSAGE_TEXT = "Привет, ГОЙДА!"
DELAY_SECONDS = 1
LOG_FILE = "vk_mailing.log"

# Настройка логирования
logging.basicConfig(filename=LOG_FILE, level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s')

try:
    vk_session = vk_api.VkApi(token=TOKEN)
    vk = vk_session.get_api()

    # Получение ID подписчиков группы
    response = vk.groups.getMembers(group_id=GROUP_ID)
    user_ids = response['items']
    total_users = len(user_ids)
    sent_count = 0
    error_count = 0

    logging.info(f"Найдено подписчиков: {total_users}")
    print(f"Найдено подписчиков: {total_users}")

    # Рассылка сообщений
    for index, user_id in enumerate(user_ids):
        try:
            vk.messages.send(user_id=user_id, message=MESSAGE_TEXT, random_id=random.randint(0, 2 ** 31 - 1))
            logging.info(f"Сообщение отправлено пользователю ID {user_id}")
            print(f"Сообщение отправлено пользователю ID {user_id} ({index + 1}/{total_users})")
            sent_count += 1
        except ApiError as error:
            error_count += 1
            if error.code == 901:
                logging.warning(f"Сообщение пользователю ID {user_id} не отправлено, нужно начать диалог с ботом.")
                print(
                    f"Сообщение пользователю ID {user_id} не отправлено, нужно начать диалог с ботом.  ({index + 1}/{total_users})")
            else:
                logging.error(f"Ошибка отправки пользователю ID {user_id}: {error}")
                print(f"Ошибка отправки пользователю ID {user_id}: {error} ({index + 1}/{total_users})")

        time.sleep(DELAY_SECONDS)

    logging.info("Рассылка завершена!")
    print("Рассылка завершена!")
    logging.info(f"Отправлено сообщений: {sent_count}, ошибок: {error_count}, из {total_users}")
    print(f"Отправлено сообщений: {sent_count}, ошибок: {error_count}, из {total_users}")


except ApiError as error:
    logging.error(f"Произошла ошибка при инициализации сессии: {error}")
    print(f"Произошла ошибка при инициализации сессии: {error}")

except Exception as e:
    logging.error(f"Произошла ошибка: {e}")
    print(f"Произошла ошибка: {e}")
 

Вложения

  • main.py
    2.9 KB · Просмотры: 5
Пользователь
Регистрация
5 Авг 2024
Сообщения
90
Всем привет !
Написал бота по рассылки через во ВК
Прошу сильно не бить меня палками



Если кто-то не хочешь скачивать даю исходный код тут
Python:
import vk_api
import time
import random
import logging
import os
from vk_api.exceptions import ApiError

# Настройки (лучше вынести в отдельный файл)
TOKEN = ""
GROUP_ID = ""
MESSAGE_TEXT = "Привет, ГОЙДА!"
DELAY_SECONDS = 1
LOG_FILE = "vk_mailing.log"

# Настройка логирования
logging.basicConfig(filename=LOG_FILE, level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s')

try:
    vk_session = vk_api.VkApi(token=TOKEN)
    vk = vk_session.get_api()

    # Получение ID подписчиков группы
    response = vk.groups.getMembers(group_id=GROUP_ID)
    user_ids = response['items']
    total_users = len(user_ids)
    sent_count = 0
    error_count = 0

    logging.info(f"Найдено подписчиков: {total_users}")
    print(f"Найдено подписчиков: {total_users}")

    # Рассылка сообщений
    for index, user_id in enumerate(user_ids):
        try:
            vk.messages.send(user_id=user_id, message=MESSAGE_TEXT, random_id=random.randint(0, 2 ** 31 - 1))
            logging.info(f"Сообщение отправлено пользователю ID {user_id}")
            print(f"Сообщение отправлено пользователю ID {user_id} ({index + 1}/{total_users})")
            sent_count += 1
        except ApiError as error:
            error_count += 1
            if error.code == 901:
                logging.warning(f"Сообщение пользователю ID {user_id} не отправлено, нужно начать диалог с ботом.")
                print(
                    f"Сообщение пользователю ID {user_id} не отправлено, нужно начать диалог с ботом.  ({index + 1}/{total_users})")
            else:
                logging.error(f"Ошибка отправки пользователю ID {user_id}: {error}")
                print(f"Ошибка отправки пользователю ID {user_id}: {error} ({index + 1}/{total_users})")

        time.sleep(DELAY_SECONDS)

    logging.info("Рассылка завершена!")
    print("Рассылка завершена!")
    logging.info(f"Отправлено сообщений: {sent_count}, ошибок: {error_count}, из {total_users}")
    print(f"Отправлено сообщений: {sent_count}, ошибок: {error_count}, из {total_users}")


except ApiError as error:
    logging.error(f"Произошла ошибка при инициализации сессии: {error}")
    print(f"Произошла ошибка при инициализации сессии: {error}")

except Exception as e:
    logging.error(f"Произошла ошибка: {e}")
    print(f"Произошла ошибка: {e}")
Я не понял как работает этот бот
 
Сверху