56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
|
import sys
|
||
|
import os
|
||
|
import telebot
|
||
|
import subprocess
|
||
|
|
||
|
# Telegram API token
|
||
|
TOKEN = 'TOKEN'
|
||
|
|
||
|
# Telegram chat ID for the channel to send messages to
|
||
|
CHAT_ID = 'CHAT ID' #starts with a -
|
||
|
|
||
|
# Path to directory where downloaded files will be saved
|
||
|
DOWNLOAD_DIR = '/PATH/TO/DOWNLOAD/AND/PRINT/FILES/FROM'
|
||
|
|
||
|
# Printer name
|
||
|
printer = "PRINTER NAME"
|
||
|
|
||
|
# Create a bot instance with the specified token
|
||
|
bot = telebot.TeleBot(TOKEN)
|
||
|
|
||
|
# Send a message to the channel when the bot is online
|
||
|
@bot.message_handler(commands=['start'])
|
||
|
def start(message):
|
||
|
bot.send_message(CHAT_ID, 'Bot is now online!')
|
||
|
|
||
|
# Handle incoming files
|
||
|
@bot.message_handler(content_types=['document', 'audio', 'photo'])
|
||
|
def handle_file(message):
|
||
|
if message.photo:
|
||
|
# Handle photos
|
||
|
bot.send_message(CHAT_ID, 'Printing Images isn\'t supported')
|
||
|
elif message.audio:
|
||
|
# Handle audio
|
||
|
bot.send_message(CHAT_ID, "I can't print sounds!")
|
||
|
else:
|
||
|
# Handle other file types
|
||
|
# Download the file
|
||
|
file_info = bot.get_file(message.document.file_id)
|
||
|
file_name = message.document.file_name
|
||
|
downloaded_file = bot.download_file(file_info.file_path)
|
||
|
|
||
|
# Save the file to the download directory
|
||
|
file_path = os.path.join(DOWNLOAD_DIR, file_name)
|
||
|
with open(file_path, 'wb') as new_file:
|
||
|
new_file.write(downloaded_file)
|
||
|
|
||
|
# Print the file
|
||
|
print_command = ["/usr/bin/lp", "-o", "fit-to-page", "-d", printer, file_path]
|
||
|
subprocess.run(print_command)
|
||
|
|
||
|
# Send a message to the channel indicating that a file has been downloaded and printed
|
||
|
bot.send_message(CHAT_ID, f'File "{file_name}" has been downloaded and printed!')
|
||
|
|
||
|
# Start the bot
|
||
|
bot.polling()
|