From c1253757f5e9be4dd30ed23f8775c0fd83e8f47d Mon Sep 17 00:00:00 2001 From: Tom Date: Mon, 3 Feb 2025 11:18:14 +0000 Subject: [PATCH] Create main.py --- telegram_bot/main.py | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 telegram_bot/main.py diff --git a/telegram_bot/main.py b/telegram_bot/main.py new file mode 100644 index 0000000..94c3327 --- /dev/null +++ b/telegram_bot/main.py @@ -0,0 +1,77 @@ +from collections import defaultdict +from dataclasses import dataclass, field +from datetime import UTC, datetime + +import requests +import telebot + +with open("./token.secret") as f: + token = f.read().strip() + + +@dataclass +class Post: + name: str + content: list = field(default_factory = list) + date: datetime = field(default_factory = lambda: datetime.now(UTC)) + + def __post_init__(self): + self.name = self.name.replace(" ", "-").lower() + self.name = self.date.strftime("%Y-%m-%d") + "-" + self.name + ".md" + + def __str__(self): + return self.name + def __repr__(self): + return f"Post(name={self.name}, date={self.date})" + + +@dataclass +class MediaGroup: + media: list = field(default_factory = list) + caption: str | None = None + +bot = telebot.TeleBot(token) + +posts = [] +by_media_group: dict[int, MediaGroup] = defaultdict(MediaGroup) +current_post = None + +@bot.message_handler(commands=['current']) +def current(message): + bot.reply_to(message, repr(current_post)) + +@bot.message_handler(commands=['new']) +def new(message): + if len(message.text.split()) < 2: + bot.reply_to(message, "Please provide a name for the post") + return + + name = message.text.removeprefix("/new ") + post = Post(name) + bot.reply_to(message, f"Made new post {post.name}") + global current_post + current_post = post + +@bot.message_handler(func=lambda message: True, content_types=["text","photo", "audio"]) +def echo_all(message): + print(f"Got message type {message.content_type}") + if not message.from_user.id == 166480434: return + if not message.chat.type == "private": return + if message.content_type == "text": + print(f"Message text: {message.text}") + if message.content_type == "photo": + if message.media_group_id: + by_media_group[message.media_group_id].media.append(message) + if message.caption: by_media_group[message.media_group_id].caption = message.caption + print(by_media_group) + + # for photo in message.photo: print(photo) + biggest = max(message.photo, key = lambda p : p.file_size) + file_info = bot.get_file(biggest.file_id) + file = requests.get(f'https://api.telegram.org/file/bot{token}/{file_info.file_path}') + with open(f"telegram_photos/{biggest.file_id}.png", "wb") as f: + f.write(file.content) + + + +bot.infinity_polling() \ No newline at end of file