Làm cách nào để tải các tệp lên Telegram theo chương trình?


0

Vì Telegram là một dịch vụ đám mây vô hạn , Tôi sử dụng nó như là một vị trí sao lưu thứ cấp. Tôi muốn tự động hóa việc này để tôi không phải nhớ thực hiện mỗi tháng (trong hai năm qua tôi đã bỏ lỡ mỗi lần sao lưu hàng tháng thứ hai).
Nhưng tôi không thể tìm cách tự động hóa bất kỳ ứng dụng khách Telegram nào mà không cần macro nhấp chuột (tôi muốn nó chạy âm thầm trong nền):

  • ./Telegram --help không làm gì ngoài việc mở chương trình.
  • Tôi đã không thành công trong việc xác định nơi argv biến đi từ phương pháp chính , vì vậy tôi không biết thậm chí còn có các đối số giao diện điều khiển.
  • Bots không thể truy cập hệ thống tập tin của tôi (và đó là một điều tốt).

Tôi có thể dễ dàng tự động đóng gói các tệp tôi muốn vào kho lưu trữ 1,5 GB bằng 7z, nhưng tôi không biết làm thế nào để thực sự gửi chúng. Có cách nào để làm điều đó mà không cần nhấp chuột macro?

Tôi đang sử dụng Debian 9.5 và đang sử dụng máy khách Linux chính thức từ telegram.org.


Bạn có thể trực tiếp sử dụng libmtproto để viết một phụ trợ lưu trữ không?
Martin Ueding

Tôi không biết, vì tôi không biết chương trình đó. Ngoài ra, tôi sẽ phải biết chi tiết về cách gửi gói đến máy chủ Telegram. Tại một số điểm tôi chỉ có một khách hàng tùy chỉnh. Nếu bạn biết cách tạo ra một chương trình tối giản cho điều đó hoặc bất kể ý tưởng của bạn là gì, điều đó sẽ thật tuyệt vời.
Fabian Röling

Tôi không biết chi tiết, nhưng có vẻ như TDlib là những gì bạn muốn.
Martin Ueding

Có vẻ như có một máy khách dòng lệnh cho Telegram và nó có thể gửi các tệp, mặc dù nó không có trong tài liệu: github.com/vysheng/tg/issues/458 Tôi sẽ thử điều đó tối nay và nếu nó hoạt động, hãy viết câu trả lời.
Fabian Röling

Câu trả lời:


0

Tôi tìm thấy một giải pháp! Máy khách chính thức có thể không cho phép nó (tất cả các đối số dòng lệnh đã biết là tài liệu không chính thức đây ), nhưng đối với Linux và Mac (và có thể cả hệ thống con Linux trên Windows), có một giao diện dòng lệnh không chính thức cho Telegram có tên là "tg": https://github.com/vysheng/tg
Nó không đề cập đến trong mô tả của nó rằng nó cũng có thể gửi tệp, nhưng trong một vấn đề Github ai đó đã viết rằng có send_file chức năng. Nói chung, nó không phải là tài liệu quá tốt, nhưng gọi nó với --help và nhập help bên trong chương trình cung cấp rất nhiều thông tin, phần còn lại có thể được tìm ra bằng cách thay đổi các tham số và thử những thứ khác nhau.
Đây là giải pháp tôi nghĩ ra theo cách đó:

Chuẩn bị

  • Cài đặt tg như tập tin readme nói. Nó không hoạt động ngay với tôi trên Debian do lỗi, nhưng như đã nói trong bình luận báo cáo lỗi này , cài đặt libssl1.0-dev là một giải pháp cho lỗi đó: Thực thi sudo apt install libssl1.0-dev giữa ./configuremake.
  • Đăng nhập bằng tài khoản Telegram của bạn: bin/telegram-cli để bắt đầu chương trình tương tác, nhập số điện thoại, nhập mã đăng nhập. Tôi đã nhập số điện thoại của mình bắt đầu bằng +49 và nó đã hoạt động, có lẽ nó là bắt buộc, tôi không biết.
  • Bây giờ sử dụng một ứng dụng khách Telegram khác để gửi tin nhắn trong cuộc trò chuyện đích (hoặc thay vào đó nhận được tin nhắn ở đó). Điều đó thêm tên của trò chuyện vào danh sách trò chuyện nội bộ của chương trình. Nếu nhiều cuộc trò chuyện có cùng tên tồn tại, nó dường như chọn một cuộc trò chuyện được thêm gần đây nhất. Tôi chưa tìm được cách nhắn tin trò chuyện bằng ID.
    Đó là cho thiết lập, quit thoát khỏi chương trình

Tải tệp lên theo chương trình

Bây giờ các tập tin có thể được tải lên bằng cách đưa ra một send_file lệnh cho chương trình với --execute, làm cho nó thực thi lệnh đó và sau đó tự động thoát:

/path/to/tg/bin/telegram-cli --exec 'send_file <chat> <filename>'

<chat> là tên của cuộc trò chuyện.
<filename> là đường dẫn đến tập tin.
/path/to/tg nên rõ ràng

Ví dụ sử dụng

Tôi sẽ sử dụng một cái gì đó như thế này để tải lên bản sao lưu thư mục Google Drive của mình lên Telegram sau khi tôi đã tạo nó với p7zip:

for filename in ~/drive_backup/drive.zip.*; do ~/tg/bin/telegram-cli --exec 'send_file Backup_chat '"$filename"; done

Điều này tải lên tất cả các tệp có tên bắt đầu bằng " drive.zip. "(.001, .002, v.v.) trong thư mục ~/drive_backup vào cuộc trò chuyện Telegram "Backup_chat".


-1

Thử

telegram-desktop -sendpath <fullpath>


Làm thế nào mà chọn một cuộc trò chuyện?
Fabian Röling

Dường như có một lệnh như vậy thực sự. Nhưng không có tài liệu cho nó. Nếu bạn biết thêm, xin vui lòng bình luận ở đây: github.com/telegramdesktop/tdesktop/issues/2058 Nhưng tôi khá chắc chắn rằng chỉ cần một con đường là không đủ, làm sao nó biết được trò chuyện nào để gửi nó đến? Tôi thực sự có thể thử đặt ID trò chuyện trước hoặc sau đường dẫn, nhưng đó chỉ là phỏng đoán ngẫu nhiên.
Fabian Röling

Tôi có nó chạy. Bạn yêu cầu giúp đỡ, có được câu trả lời đúng và đúng và bỏ phiếu -1? O_o Đừng tin vào sự giúp đỡ của tôi nữa
Juan

Vâng, làm thế nào để bạn gửi đến một cuộc trò chuyện cụ thể? Nó không thể chỉ gửi nó đến một cuộc trò chuyện ngẫu nhiên. Tôi có cần ID, tên hoặc cái gì khác không? Tôi đặt tranh luận đó ở đâu?
Fabian Röling

Tôi đã thử nó bây giờ. Đó là tương tác, tôi phải nhấp vào một cuộc trò chuyện. Điều đó không tự động và không thể xảy ra trong nền. Vì vậy, bài viết này thực sự không trả lời Queston của tôi.
Fabian Röling
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.