add moderation

This commit is contained in:
Rykov7
2022-10-30 09:24:21 +03:00
parent ddfed827cd
commit 07e2256442
3 changed files with 42 additions and 78 deletions
+41 -78
View File
@@ -1,12 +1,14 @@
import telebot from telebot import types
from flask import Flask, request, abort from flask import Flask, request, abort
from datetime import datetime as dt from datetime import datetime as dt
from os.path import exists from os.path import exists
import csv import csv
from time import sleep
from threading import Thread
from .query_log import logging from .query_log import logging
from .me import get_me from .me import get_me
from .config import bot, ADMIN_ID, TOKEN from .config import bot, ADMIN_ID, TOKEN, TEST_CHAT
from . import reminder from . import reminder
# https://core.telegram.org/bots/api Telegram Bot API # https://core.telegram.org/bots/api Telegram Bot API
@@ -17,21 +19,36 @@ app = Flask(__name__)
print(">>> LutzBot is running! <<<") print(">>> LutzBot is running! <<<")
zen_rows = """Beautiful is better than ugly. zen_rows = ['Beautiful is better than ugly.', 'Explicit is better than implicit.', 'Simple is better than complex.',
Explicit is better than implicit. 'Complex is better than complicated.', 'Flat is better than nested.', 'Sparse is better than dense.',
Simple is better than complex. 'Readability counts.',
Complex is better than complicated. "Special cases aren't special enough to break the rules. Although practicality beats purity.",
Flat is better than nested. 'Errors should never pass silently. Unless explicitly silenced.',
Sparse is better than dense. 'In the face of ambiguity, refuse the temptation to guess.',
Readability counts. 'There should be one — and preferably only one — obvious way to do it.',
Special cases aren't special enough to break the rules. Although practicality beats purity. 'Now is better than never. Although never is often better than *right* now.',
Errors should never pass silently. Unless explicitly silenced. "If the implementation is hard to explain, it's a bad idea.",
In the face of ambiguity, refuse the temptation to guess. 'If the implementation is easy to explain, it may be a good idea.',
There should be one-- and preferably only one --obvious way to do it. "Namespaces are one honking great idea — let's do more of those!"]
Now is better than never. Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea. def wait_for_readers(action, chat_id, msg_id):
Namespaces are one honking great idea -- let's do more of those!""".split('\n') sleep(60)
action(chat_id, msg_id)
@bot.message_handler(func=(lambda message: message.text.startswith('https://tg.sv/') or
message.text.startswith('https://goo.by/') or
message.text.startswith('🍀GREEN ROOM🍀')),
content_types=['animation', 'text'])
def starts_with_handler(message: types.Message):
warn = bot.send_message(message.chat.id,
f'♻ <b><a href="tg://user?id={message.from_user.id}">{message.from_user.first_name}</a></b>'
f' заблокирован.', parse_mode='HTML')
bot.ban_chat_member(message.chat.id, message.from_user.id)
bot.delete_message(message.chat.id, message.id)
Thread(target=wait_for_readers, args=(bot.delete_message, message.chat.id, warn.id)).start()
@bot.message_handler(commands=['rules']) @bot.message_handler(commands=['rules'])
@@ -97,72 +114,18 @@ def send_log(message):
bot.send_message(ADMIN_ID, f'<code>{text}</code>', parse_mode='html') bot.send_message(ADMIN_ID, f'<code>{text}</code>', parse_mode='html')
@bot.inline_handler(lambda query: len(query.query) == 'b')
def default_query(inline_query):
"""Inline Books"""
lutz_rus = telebot.types.InlineQueryResultCachedDocument(
id='44', title='📕 Изучаем Python 🇷🇺',
document_file_id='BQACAgIAAxkBAAIBcGLHE2ryQewEP1ddXOd_jF3OOHUfAAISIAACaOk4SissgGKstQbqKQQ',
description='Марк Лутц, 5-е издание, Том 1',
caption="""<i><b>Изучаем Python</b>, 5-е издание</i>
├ Автор: Марк Лутц
└ Год: 2019""",
parse_mode='HTML',
)
matthes_rus = telebot.types.InlineQueryResultCachedDocument(
id='45', title='📕 Изучаем Python 🇷🇺',
document_file_id='BQACAgIAAxkBAAIBdmLHF0InnLNlQuKzi1fZOYWOdu7eAAIrIAACaOk4StPj0vlMzwe2KQQ',
description='Эрик Мэтиз , 3-е издание',
caption="""<i><b>Изучаем Python</b>, 3-е издание</i>
├ Автор: Эрик Мэтиз
└ Год: 2020""",
parse_mode='HTML',
)
lutz = telebot.types.InlineQueryResultDocument(
id='77', title='📕 Learning Python ⭐️',
document_url='https://fk7.ru/books/OReilly.Learning.Python.5th.Edition.pdf',
description='Mark Lutz, 5th Edition',
caption="""<i><b>Learning Python</b>, 5th Edition</i>
├ by Mark Lutz
└ Released June 2013""",
parse_mode='HTML',
mime_type='application/pdf',
thumb_url='https://fk7.ru/books/OReilly.Learning.Python.5th.Edition.jpg', )
matthes = telebot.types.InlineQueryResultDocument(
id='88', title='📕 Python Crash Course',
document_url='https://fk7.ru/books/PythonCrashCourse.pdf',
description='Eric Matthes, 2th Edition',
caption="""<i><b>Python Crash Course</b>, 2th Edition</i>
├ by Eric Matthes
└ Released 2019""",
parse_mode='HTML',
mime_type='application/pdf',
thumb_url='https://fk7.ru/books/PythonCrashCourse.jpg', )
bot.answer_inline_query(
inline_query.id, [lutz, matthes, lutz_rus, matthes_rus],
cache_time=12)
@bot.inline_handler(lambda query: True) @bot.inline_handler(lambda query: True)
def default_query(inline_query): def default_query(inline_query):
"""Inline Texts""" """Inline Texts"""
zen = [] zen = []
for id_p, phrase in enumerate(zen_rows): for id_p, phrase in enumerate(zen_rows):
if inline_query.query.casefold() in phrase.casefold(): q = inline_query.query.casefold()
zen.append(telebot.types.InlineQueryResultArticle( if phrase.casefold().startswith(q) or ' ' + q in phrase.casefold():
f"{id_p + 7000}", phrase, telebot.types.InputTextMessageContent( zen.append(types.InlineQueryResultArticle(
f"<i>{phrase}</i>", parse_mode='HTML'), description=f'The Zen of Python #{id_p + 1}')) f"{id_p + 7000}", f'The Zen of Python #{id_p + 1}', types.InputTextMessageContent(
f"<i>{phrase}</i>", parse_mode='HTML'), description=phrase))
bot.answer_inline_query( bot.answer_inline_query(inline_query.id, zen, cache_time=12)
inline_query.id, zen,
cache_time=12)
@bot.message_handler(content_types=['document']) @bot.message_handler(content_types=['document'])
@@ -210,7 +173,7 @@ def webhook():
""" Parse POST requests from Telegram. """ """ Parse POST requests from Telegram. """
if request.headers.get('content-type') == 'application/json': if request.headers.get('content-type') == 'application/json':
json_string = request.get_data().decode('utf-8') json_string = request.get_data().decode('utf-8')
update = telebot.types.Update.de_json(json_string) update = types.Update.de_json(json_string)
bot.process_new_updates([update]) bot.process_new_updates([update])
return '' return ''
else: else:
+1
View File
@@ -9,3 +9,4 @@ bot = TeleBot(TOKEN)
ADMIN_ID = 280887861 # Rykov7 ADMIN_ID = 280887861 # Rykov7
PYTHONCHATRU = -1001338616632 # pythonchatru PYTHONCHATRU = -1001338616632 # pythonchatru
TEST_CHAT = -1001622893830
BIN
View File
Binary file not shown.