@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()
  • Вопрос задан
  • 229 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Proxor1
Начинающий программист
Зайди в частный канал, после чего пригласи туда бота Get My Id, после чего он сразу напишет Current chat ID, после чего, это значение помести в переменную channel_username
И важно, если там будет минус вначале, его тоже указываем
Если помог, не забудь указать моë решение правильным
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы