Files
nosibakabot/bot/bot.py
2024-11-19 18:00:11 +03:00

106 lines
3.8 KiB
Python

from telebot.async_telebot import AsyncTeleBot
from telebot.types import Message, InputFile
import asyncio
from secret import TOKEN
import textbook
from sqlalchemy.orm import Session
from db.engine import engine
from db import models
from msgprocessor import TrackerRemovalMsgProcessor, TrackerRemovalProcessorMessage
from femboygenerator import FemboyGeneratorMsgProcessor, FemboyGeneratorMessage
bot = AsyncTeleBot(TOKEN)
@bot.message_handler(commands=["start"])
async def start(msg: Message):
if msg.chat.type == "private":
await bot.send_message(chat_id=msg.chat.id, text=textbook.start_private)
elif msg.chat.type in ("group", "supergroup"):
await bot.send_message(chat_id=msg.chat.id, text=textbook.start_group)
@bot.message_handler(func=lambda message: True)
async def got_message(msg: Message):
# god i love nones as fuck
if msg.text is None:
return
if msg.from_user is None:
return
tracker_removal_result = TrackerRemovalMsgProcessor(
TrackerRemovalProcessorMessage(fromUser=msg.from_user, text=msg.text)
).process()
femboy_generator_result = FemboyGeneratorMsgProcessor(msg=msg).process()
if tracker_removal_result.needsToReply:
try:
await bot.delete_message(msg.chat.id, msg.id, timeout=5)
except Exception as e:
await bot.reply_to(
message=msg.id,
text="Uoghhhh, i am not an admin here? I can't cleanup this tracking(",
)
print(e, flush=True) # todo: логгер
await bot.send_message(
msg.chat.id, tracker_removal_result.text, parse_mode="html"
)
if femboy_generator_result.send:
with Session(engine) as db:
upload = (
db.query(models.TelegramUpload)
.filter(
models.TelegramUpload.path == femboy_generator_result.media_path
)
.first()
)
if upload:
if femboy_generator_result.media_type == "gif":
await bot.send_animation(
reply_to_message_id=femboy_generator_result.message.id,
chat_id=femboy_generator_result.message.id,
animation=upload.file_id,
)
elif femboy_generator_result.media_type == "pic":
await bot.send_photo(
reply_to_message_id=femboy_generator_result.message.id,
chat_id=femboy_generator_result.message.id,
photo=upload.file_id,
)
else:
if femboy_generator_result.media_type == "gif":
reply_msg = await bot.send_animation(
reply_to_message_id=femboy_generator_result.message.id,
chat_id=femboy_generator_result.message.id,
animation=InputFile(femboy_generator_result.media_path),
)
elif femboy_generator_result.media_type == "pic":
await bot.send_photo(
reply_to_message_id=femboy_generator_result.message.id,
chat_id=femboy_generator_result.message.id,
photo=InputFile(femboy_generator_result.media_path),
)
file_id = reply_msg.animation.file_id
new_upload = models.TelegramUpload(
path=femboy_generator_result.media_path,
file_id=file_id,
type=femboy_generator_result.media_type,
)
db.add(new_upload)
db.commit()
async def main():
a = asyncio.create_task(bot.polling(non_stop=True))
await a
if __name__ == "__main__":
print("Bot started", flush=True)
asyncio.run(main())