Compare commits
3
Commits
9d95c98424
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a21c7f54f | ||
|
|
7c2cc5e8d3 | ||
|
|
a8be017843 |
@@ -0,0 +1,23 @@
|
||||
# MMCS Quotes Bridge
|
||||
> Текущее название является рабочим вариантом, имеет мало общего с сутью проекта, все совпадения аббревиатур с реальными случайны и не несут никакой смысловой нагрузки.
|
||||
>
|
||||
> *P.S. кто знает тот знает короче :DDD*
|
||||
|
||||
Этот проект - реализация бота, предназначенного для репоста текстовых постов из источников в VK и Telegram в один выходной Telegram-канал. Изначальная цель - репостить цитаты из разных цитатников в один канал, но в принципе вы можете придумать своё применение.
|
||||
|
||||
## Платформа
|
||||
**Операционная система.** Предполагается работа на Linux, но теоретически можно заставить бота работать и на других системах.
|
||||
|
||||
**Компилятор.** Проект написан на C++20 и соответственно требует более-менее современный компилятор.
|
||||
|
||||
## Зависимости
|
||||
Большая часть необходимых библиотек присутствует в репозитории, однако для того, чтобы скачать их вместе с проектом, при клонировании требуется указать --recursive.
|
||||
CMakeLists настроен на максимально портативный билд, однако всё же не все библиотеки встраиваются в исполняемый файл.
|
||||
Для работы бота достаточно установленной библиотеки curl.
|
||||
Для сборки (помимо CMake) нужны следующие дополнительные пакеты:
|
||||
- gperf
|
||||
- заголовочные файлы для OpenSSL, zlib
|
||||
По вопросам сборки можно писать в issues.
|
||||
|
||||
## Конфигурация
|
||||
Для настройки используется файл `bridge_config.json`. В качестве примера настройки оставлен `bridge_config.example.json`, который нужно отредактировать под себя.
|
||||
+7
-1
@@ -470,7 +470,8 @@ bool RepostManager::drop_posts_older_than(std::vector<AbstractPost> &posts, long
|
||||
}
|
||||
|
||||
std::optional<AbstractPost> RepostManager::to_abstract_post(const vk::Post &post, int sourceIndex) {
|
||||
return { AbstractPost(posts::SRC_VK, sourceIndex, post.id, post.date, post.text) };
|
||||
if (post.text.empty()) return {};
|
||||
else return { AbstractPost(posts::SRC_VK, sourceIndex, post.id, post.date, post.text) };
|
||||
}
|
||||
|
||||
std::optional<AbstractPost> RepostManager::to_abstract_post(const td_api::message &post, int sourceIndex) {
|
||||
@@ -486,6 +487,7 @@ std::vector<AbstractPost> RepostManager::to_abstract_posts(std::vector<vk::Post>
|
||||
std::vector<AbstractPost> result;
|
||||
result.reserve(posts.size());
|
||||
for (auto &post : posts) {
|
||||
if (post.text.empty()) continue;
|
||||
result.emplace_back(posts::SRC_VK, sourceIndex, post.id, post.date, post.text);
|
||||
}
|
||||
return result;
|
||||
@@ -555,6 +557,10 @@ bool RepostManager::recheck_vk_posts(std::function<void()> onDone) {
|
||||
}
|
||||
|
||||
void RepostManager::repost(AbstractPost &post) {
|
||||
if (post.text.length() == 0) {
|
||||
spdlog::error("repost(): zero post length (post id {} date {})", post.id, post.date);
|
||||
return;
|
||||
}
|
||||
spdlog::debug("reposting (post length {})", post.text.length());
|
||||
std::string_view signature = posts::add_signature(post, m_appConfig);
|
||||
int signatureStart = post.text.length() - signature.length();
|
||||
|
||||
Reference in New Issue
Block a user