Advertisement
DeaD_EyE

test telegram link remover bot

Dec 20th, 2022 (edited)
1,154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.54 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. # https://github.com/python-telegram-bot/python-telegram-bot
  4. # pip install python-telegram-bot --pre
  5. # pip install python-telegram-bot[rate-limiter]
  6.  
  7. import logging
  8. import sqlite3
  9. from pathlib import Path
  10.  
  11. import telegram
  12. from telegram.ext import AIORateLimiter, ApplicationBuilder, MessageHandler, filters
  13.  
  14. logging.basicConfig(
  15.     level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
  16. )
  17. aps_logger = logging.getLogger("apscheduler")
  18. aps_logger.setLevel(logging.WARNING)
  19.  
  20.  
  21. async def post(update, context):
  22.     global update_id
  23.     update_id = update.update_id + 1
  24.  
  25.     if post := update.channel_post:
  26.         for entity in post.entities:
  27.             if entity.type == "url":
  28.                 url = post.text[entity.offset : entity.offset + entity.length]
  29.                 if url in links:
  30.                     try:
  31.                         url = f"https://t.me/c/{abs(post.sender_chat.id + 1000000000000)}/{links[url]}"
  32.                         try:
  33.                             await post.edit_text(f"Link wurde bereits gepostet.\n{url}")
  34.                         except telegram.error.TimedOut:
  35.                             continue
  36.  
  37.                     except telegram.error.BadRequest:
  38.                         # print("Konnte Post nicht löschen")
  39.                         continue
  40.  
  41.                     # print(
  42.                     #     "Link ist gelöscht worden, da dieser schon einmal gepostet worden ist."
  43.                     # )
  44.                 else:
  45.                     # print(url)
  46.                     links[url] = post.id
  47.                     # print("Füge Link zur DB hinzu")
  48.                     with db:
  49.                         cur.execute(
  50.                             "INSERT INTO urls VALUES (:url, :cid);",
  51.                             {"url": url, "cid": post.id},
  52.                         )
  53.  
  54.  
  55. if __name__ == "__main__":
  56.     TOKEN = Path.home().joinpath(".local/telegram_token").read_text().strip()
  57.     db = sqlite3.connect(Path.home().joinpath(".local/telegram_urls"))
  58.     cur = db.cursor()
  59.     with db:
  60.         cur.execute("CREATE TABLE IF NOT EXISTS urls (url string, id integer);")
  61.  
  62.     update_id = None
  63.     links = {}
  64.  
  65.     for url, cid in cur.execute("SELECT * FROM urls;"):
  66.         links[url] = cid
  67.         print(url, "->", cid)
  68.  
  69.     application = (
  70.         ApplicationBuilder().token(TOKEN).rate_limiter(AIORateLimiter()).build()
  71.     )
  72.  
  73.     msg_handler = MessageHandler(filters.TEXT, post)
  74.     application.add_handler(msg_handler)
  75.     application.run_polling()
  76.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement