async def delete_page(self, title, nick, reason): reason_list = { 1: "создание страниц без аккаунта запрещено", 2: "создание новой страницы с подозрительным никнеймом" } page = self.wiki("parse", page=title, prop="wikitext")["parse"]["wikitext"].replace( "http", "") try: self.wiki("delete", title=title, reason=reason_list[reason], token=self.wiki.token(), POST=True) except pywikiapi.utils.ApiError as ex: if ex.data["code"] == "badtoken": await asyncio.sleep(2) self.wiki = init_wiki(False) return self.delete_page(title, nick, reason) msg = "**удалено:** `" + title + "` **автор**: <http://dfwk.ru/Служебная:Заблокировать/" + nick + \ "> **причина:** `" + reason_list[reason] + "` **содержание:**" + page[:100] + "..." await self.send_message(msg)
def __init__(self): super().__init__() self.timestamp = "20010115145600" self.wiki = init_wiki(False) self.channel_text = self.get_channel(int(os.environ["CHANNEL_ID"])) self.main_loop = self.loop.create_task(self.main_loop())
from util import load_db, find_redirect_and_not_redirect_pages, generate_name_id, init_wiki db = load_db() redirect_dict, _, _ = find_redirect_and_not_redirect_pages(db) ni_redirect, ni_db = generate_name_id(redirect_dict), generate_name_id( db, False) fixed_redirects = {} wiki = init_wiki() # рекурсивная функция которая находит страницы на которые ссылаются редиректы # убрал поиск группами из за перенаправлений с # def fix_redirect(obj, orig_name=None, redirection_counter=0, suffix=None): if orig_name is None: orig_name = obj["title"] redirect = obj["wikitext"].split("#") if len(redirect) > 2: redirect = obj["wikitext"].split("#") suffix = "#" + redirect[2].replace("]]", "") else: suffix = "" redirection_counter += 1 if obj["title"].lower() == obj["redirect"][0].lower( ): # игнорируем редиректы с разницой только в регистре return None, None, None # что бы не уйти в рекурсию if len(obj["redirect"]) > 0 and obj["redirect"][0].lower( ) in ni_redirect.keys():