From 2358679904dd8a3744eda324060876ecf5698049 Mon Sep 17 00:00:00 2001 From: esefxdz Date: Tue, 6 Oct 2026 20:24:08 +0300 Subject: [PATCH] Re-enable twitter bridge via self-hosted RSSHub (esefrss) Both forwarders (main + mao server) read TWITTER_RSS_URL, now pointed at RSSHub on yuuka. Guard on_ready so reconnects don't start duplicate pollers. Co-Authored-By: Claude Opus 5.5 --- main.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/main.py b/main.py index 4d8eb5b..fd99911 100644 --- a/main.py +++ b/main.py @@ -5,7 +5,7 @@ import os import logging import asyncio -# from twitterbridge.rss import TwitterRSSForwarder +from twitterbridge.rss import TwitterRSSForwarder load_dotenv('credentials.env') @@ -18,20 +18,23 @@ bot = commands.Bot(command_prefix='!', intents=intents, help_command=None) # The Telegram bridge discovers its own routes from credentials.env and # starts polling when the extension loads — see tgbridge/config.py. -# twitter = TwitterRSSForwarder( -# webhook_url=os.getenv('TWITTER_DISCORD_WEBHOOK'), -# ) +twitter = TwitterRSSForwarder( + webhook_url=os.getenv('TWITTER_DISCORD_WEBHOOK'), +) -# twitter_mao = TwitterRSSForwarder( -# webhook_url=os.getenv('TWITTER_DISCORD_WEBHOOK_MAO'), -# guid_file='data/last_tweet_mao.txt', -# ) +twitter_mao = TwitterRSSForwarder( + webhook_url=os.getenv('TWITTER_DISCORD_WEBHOOK_MAO'), + guid_file='data/last_tweet_mao.txt', +) @bot.event async def on_ready(): print(f'[+] {bot.user} is online!') - # asyncio.create_task(twitter.start()) - # asyncio.create_task(twitter_mao.start()) + # on_ready fires again after reconnects; don't start duplicate pollers + if not twitter._running: + asyncio.create_task(twitter.start()) + if not twitter_mao._running: + asyncio.create_task(twitter_mao.start()) # Clear stale global slash commands try: await bot.tree.sync() @@ -54,7 +57,7 @@ async def main(): await bot.load_extension('cogs.gitpull') await bot.load_extension('cogs.currency_converter') await bot.load_extension('ai.ai_roleplay') - # await bot.load_extension('twitterbridge.leaks_cmd') + await bot.load_extension('twitterbridge.leaks_cmd') await bot.load_extension('blue_archive.gacha') await bot.load_extension('blue_archive.inventory') await bot.load_extension('firebase_website') @@ -69,10 +72,10 @@ async def main(): # bot.close() unloads extensions, so tgbridge.teardown stops the # Telegram poller and closes its aiohttp session for us pass - # twitter.stop() - # twitter_mao.stop() - # await twitter.close() - # await twitter_mao.close() + twitter.stop() + twitter_mao.stop() + await twitter.close() + await twitter_mao.close() logging.basicConfig(level=logging.INFO) logging.getLogger('httpx').setLevel(logging.WARNING)