Skip to content

Commit

Permalink
Add: doc attachments support
Browse files Browse the repository at this point in the history
  • Loading branch information
DUB1401 committed Jul 25, 2023
1 parent 85ce51f commit 93aa079
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 10 deletions.
14 changes: 9 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

Для отправки сообщений используется буфер ожидания, что позволяет автопостеру корректно работать с включённым медленным режимом группы (чтобы игнорировать медленный режим или отправлять сообщения в канал, бот должен иметь права администратора).

Автопостер поддерживает пересылку следующих типов вложений: _photo_, _video_. Подробнее [здесь](https://dev.vk.com/reference/objects/attachments-wall).
Автопостер поддерживает пересылку следующих типов вложений: _doc_, _photo_, _video_. Подробнее [здесь](https://dev.vk.com/reference/objects/attachments-wall).

## Порядок установки и использования
1. Загрузить последний релиз. Распаковать.
Expand All @@ -28,7 +28,7 @@ pip install -r requirements.txt
```JSON
"token": ""
```
Сюда необходимо занести токен бота Telegram (можно узнать у [@BotFather](https://t.me/BotFather)).
Сюда необходимо занести токен бота Telegram (можно узнать у [BotFather](https://t.me/BotFather)).
___
```JSON
"target-id": ""
Expand Down Expand Up @@ -64,9 +64,10 @@ ___
___
```JSON
"attachments": {
"photo": true,
"video": true
}
"doc": true,
"photo": true,
"video": true
}
```
В данной секции можно указать, какие типы вложений требуется пересылать в Telegram.

Expand All @@ -88,4 +89,7 @@ ___
```
Включает отладочный режим логгирования.

# Благодарность
* [@yt-dlp](https://github.com/yt-dlp) – библиотека загрузки видео из ВКонтакте.

_Copyright © DUB1401. 2022-2023._
1 change: 1 addition & 0 deletions Settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"disable-web-page-preview": true,
"blacklist": [],
"attachments": {
"doc": true,
"photo": true,
"video": true
},
Expand Down
26 changes: 21 additions & 5 deletions Source/Callback.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from telebot.types import InputMediaPhoto, InputMediaVideo
from telebot.types import InputMediaDocument, InputMediaPhoto, InputMediaVideo
from MessageEditor import MessageEditor
from threading import Thread
from time import sleep
Expand Down Expand Up @@ -83,6 +83,11 @@ def __GetAttachements(self, PostAttachements: dict) -> list:
"url": None,
"filename": None
}

# Получение URL вложения и названия файла (doc).
if Bufer["type"] == "doc":
Bufer["url"] = Attachment[Type]["url"]
Bufer["filename"] = Attachment[Type]["url"].split('?')[0].split('/')[-1] + "." + Attachment[Type]["ext"]

# Получение URL вложения и названия файла (photo).
if Bufer["type"] == "photo":
Expand All @@ -98,17 +103,17 @@ def __GetAttachements(self, PostAttachements: dict) -> list:
if os.path.exists("Temp/" + Bufer["filename"]) == False:
# Запись в лог отладочной информации: URL загружаемого вложения.
logging.debug("Downloading attachment (\"" + Type + "\"): " + Bufer["url"])

# Загрузка вложения (photo).
if Bufer["type"] == "photo":
# Загрузка вложения (doc, photo).
if Bufer["type"] in ["doc", "photo"]:
# Запрос вложения.
Response = requests.get(Bufer["url"])

# Если удалось запросить вложение.
if Response.status_code == 200:
# Запись описания вложения в список вложений.
Attachements.append(Bufer)

# Сохранить вложение в файл.
with open("Temp/" + Bufer["filename"], "wb") as FileWriter:
FileWriter.write(Response.content)
Expand Down Expand Up @@ -152,6 +157,17 @@ def __SenderThread(self):
# Для каждого вложения.
for Index in range(0, len(self.__MessagesBufer[0]["attachments"])):

# Если тип вложения – doc.
if self.__MessagesBufer[0]["attachments"][Index]["type"] == "doc":
# Дополнить медиа группу вложением (doc).
MediaGroup.append(
InputMediaDocument(
open("Temp/" + self.__MessagesBufer[0]["attachments"][Index]["filename"], "rb"),
caption = self.__MessagesBufer[0]["text"] if Index == 0 else "",
parse_mode = self.__Settings["parse-mode"] if Index == 0 else None
)
)

# Если тип вложения – photo.
if self.__MessagesBufer[0]["attachments"][Index]["type"] == "photo":
# Дополнить медиа группу вложением (photo).
Expand Down

0 comments on commit 93aa079

Please sign in to comment.