Files
maubot-bots/r34/r34bot.py
2026-03-28 15:49:27 -04:00

41 lines
1.5 KiB
Python

import json
import random
import os
from typing import Type, Optional
from mautrix.util.config import BaseProxyConfig, ConfigUpdateHelper
from maubot import Plugin, MessageEvent
from maubot.handlers import command
from urllib.parse import urlparse, parse_qs
api_key = os.environ.get('R34_API_KEY')
api_user = os.environ.get('R34_UID')
class R34Bot(Plugin):
@command.new("r34")
@command.argument("pattern", pass_raw=True, required=True)
async def r34(self, evt: MessageEvent, pattern: Optional[str]) -> None:
if (pattern):
tags=pattern.replace(' ','+')
api_url='https://api.rule34.xxx/index.php?page=dapi&api_key='+api_key+'&user_id='+api_user+'&s=post&q=index&tags='+tags+"&limit=100&json=1"
async with self.http.get(api_url) as resp:
response_json = await resp.json()
self.log.debug(str(response_json))
results = []
for item in response_json:
results.append(item['id'])
self.log.debug(str(results))
random_result = random.choice(results)
url = 'https://rule34.xxx/index.php?page=post&s=view&id='+str(random_result)
await evt.respond(url)
else:
api_url='https://rule34.xxx/index.php?page=post&s=random'
async with self.http.get(api_url) as resp:
self.log.debug(str(resp))
parsed = urlparse(str(resp.url))
await evt.respond('https://rule34.xxx/index.php?'+str(parsed.query))