mirror of
https://github.com/TomHodson/tomhodson.github.com.git
synced 2025-06-26 10:01:18 +02:00
Create main.py
This commit is contained in:
parent
cd80ff3ab8
commit
c1253757f5
77
telegram_bot/main.py
Normal file
77
telegram_bot/main.py
Normal file
@ -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()
|
Loading…
x
Reference in New Issue
Block a user