DeaD_EyE icon

test telegram link remover bot

DeaD_EyE | PRO | 12/20/22 11:25:36 AM UTC (Edited) | 0 ⭐ | 2032 👁️ | Never ⏰ | []
Python |

2.54 KB

|

None

|

0 👍

/

0 👎

#!/usr/bin/env python3
 
# https://github.com/python-telegram-bot/python-telegram-bot
# pip install python-telegram-bot --pre
# pip install python-telegram-bot[rate-limiter]
 
import logging
import sqlite3
from pathlib import Path
 
import telegram
from telegram.ext import AIORateLimiter, ApplicationBuilder, MessageHandler, filters
 
logging.basicConfig(
    level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
aps_logger = logging.getLogger("apscheduler")
aps_logger.setLevel(logging.WARNING)
 
 
async def post(update, context):
    global update_id
    update_id = update.update_id + 1
 
    if post := update.channel_post:
        for entity in post.entities:
            if entity.type == "url":
                url = post.text[entity.offset : entity.offset + entity.length]
                if url in links:
                    try:
                        url = f"https://t.me/c/{abs(post.sender_chat.id + 1000000000000)}/{links[url]}"
                        try:
                            await post.edit_text(f"Link wurde bereits gepostet.\n{url}")
                        except telegram.error.TimedOut:
                            continue
 
                    except telegram.error.BadRequest:
                        # print("Konnte Post nicht löschen")
                        continue
 
                    # print(
                    #     "Link ist gelöscht worden, da dieser schon einmal gepostet worden ist."
                    # )
                else:
                    # print(url)
                    links[url] = post.id
                    # print("Füge Link zur DB hinzu")
                    with db:
                        cur.execute(
                            "INSERT INTO urls VALUES (:url, :cid);",
                            {"url": url, "cid": post.id},
                        )
 
 
if __name__ == "__main__":
    TOKEN = Path.home().joinpath(".local/telegram_token").read_text().strip()
    db = sqlite3.connect(Path.home().joinpath(".local/telegram_urls"))
    cur = db.cursor()
    with db:
        cur.execute("CREATE TABLE IF NOT EXISTS urls (url string, id integer);")
 
    update_id = None
    links = {}
 
    for url, cid in cur.execute("SELECT * FROM urls;"):
        links[url] = cid
        print(url, "->", cid)
 
    application = (
        ApplicationBuilder().token(TOKEN).rate_limiter(AIORateLimiter()).build()
    )
 
    msg_handler = MessageHandler(filters.TEXT, post)
    application.add_handler(msg_handler)
    application.run_polling()
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎