mirror of
https://github.com/EDeev/vkrepost_to_tg.git
synced 2026-10-07 20:49:50 +03:00
- фоновая рассылка падала на каждом новом посте: NameError: name 'types' is not defined (видно в логе сервера) — бот не пересылал ничего; - пост с одной картинкой не отправлялся: send_media_group принимает от 2 до 10 элементов; больше 10 фото — тоже ошибка; теперь одиночное фото — send_photo, альбом обрезается до 10; - подпись длиннее 1024 символов ломала отправку — длинный текст уходит отдельными сообщениями (с делением по строкам, чтобы не рвать HTML); - если первым вложением была ссылка или опрос, текст поста терялся (подпись ставилась только на вложение с индексом 0); - текст и названия из ВК подставлялись в HTML без экранирования; ссылки оформлялись Markdown-синтаксисом ([..](..)) при разметке HTML; - post_message[0] у одиночного сообщения, logging.danger, /notif без подписок — падения; - у видео без photo_800 разбор поста падал; «Лайков» у видео на самом деле были просмотры; - синхронные вызовы vk_api и time.sleep блокировали бота — теперь в отдельном потоке и asyncio.sleep; ошибка у одного подписчика не мешает остальным. Новое: /logout — удалить сохранённый токен VK; сообщение со ссылкой-токеном удаляется из переписки. Токены бота и VK — из переменных окружения, таблицы SQLite создаются при первом запуске (пустые базы убраны из репозитория), ссылка «АВТОР» — на EDeev.
21 lines
774 B
Python
21 lines
774 B
Python
import logging
|
|
import os
|
|
|
|
from aiogram import Bot, Dispatcher
|
|
from aiogram.enums.parse_mode import ParseMode
|
|
from aiogram.fsm.storage.memory import MemoryStorage
|
|
from aiogram.client.bot import DefaultBotProperties
|
|
|
|
from config import botToken
|
|
from sql import Users, Base
|
|
|
|
bot = Bot(token=botToken, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
|
|
dp = Dispatcher(storage=MemoryStorage())
|
|
|
|
os.makedirs("../db", exist_ok=True)
|
|
du = Users('../db/users.db')
|
|
db = Base('../db/base.db')
|
|
|
|
# лог в файл, если задан LOG_FILE (так бот работал на сервере), иначе — в консоль
|
|
logging.basicConfig(level=logging.INFO, filename=os.getenv("LOG_FILE") or None,
|
|
format="%(asctime)s %(levelname)s %(message)s")
|