@blackdrums

Как сделать автоматическую отправку файлов из папки на компьютере в telegram группу или чат?

Суть вопроса: автоматизировать отправку файлов из папки, если в паке появляются новые файлы, в определенный чат(и\или группу) в телеграме.

Есть скрип (больше спасибо его автору ), который уже реализует похожее, но он отправляет только в открытый канал, а это не совсем подходит.

Код:

import asyncio
import os
from telethon import TelegramClient, events, sync

api_id = 111111
api_hash = ''
bot_token = ''
channel_username = '@wefwfwfve'#телеграмм канал куда будут отправляться файлы
folder_path = 'C:/Users/sk1/Documents/kakjaskd'#путь к папке которая будет мониториться кодом



client = TelegramClient('new_session', api_id, api_hash).start(bot_token=bot_token)

@client.on(events.NewMessage())
async def my_event_handler(event):
    pass

async def send_file_to_channel(file_path):

    await client.send_file(channel_username, file_path)


    #os.remove(file_path)убери комментарий если хочешь чтобы файл удалялся после отправки

async def monitor_folder():
    sent_files_path = os.path.join(folder_path, 'sented_files.txt')
    sent_files = []

    if os.path.exists(sent_files_path):
        with open(sent_files_path, 'r') as file:
            sent_files = file.read().splitlines()

    while True:
        files = os.listdir(folder_path)
        xlsx_files = [f for f in files if f.endswith('.xlsx') and f not in sent_files]

        for file in xlsx_files:
            try:
                await send_file_to_channel(os.path.join(folder_path, file))
                sent_files.append(file)
            except Exception as e:
                print(f"Error sending file {file}: {e}")

        with open(sent_files_path, 'w') as file:
            file.write('\n'.join(sent_files))

        await asyncio.sleep(5)
with client:
    client.loop.create_task(monitor_folder())
    client.run_until_disconnected()
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Proxor1
Начинающий программист
Зайди в частный канал, после чего пригласи туда бота Get My Id, после чего он сразу напишет Current chat ID, после чего, это значение помести в переменную channel_username
И важно, если там будет минус вначале, его тоже указываем
Если помог, не забудь указать моë решение правильным
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы