mirror of
https://github.com/civsocit/olgram.git
synced 2023-07-22 01:29:12 +03:00
ban\unban commands
This commit is contained in:
parent
59b73c33dc
commit
363391b575
2
main.py
2
main.py
@ -52,7 +52,7 @@ def main():
|
|||||||
"разработки)", action="store_true")
|
"разработки)", action="store_true")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.new_event_loop()
|
||||||
loop.run_until_complete(initialization())
|
loop.run_until_complete(initialization())
|
||||||
|
|
||||||
loop.create_task(dp.start_polling())
|
loop.create_task(dp.start_polling())
|
||||||
|
@ -72,3 +72,14 @@ class GroupChat(Model):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
table = 'group_chat'
|
table = 'group_chat'
|
||||||
|
|
||||||
|
|
||||||
|
class BannedUser(Model):
|
||||||
|
id = fields.BigIntField(pk=True)
|
||||||
|
telegram_id = fields.BigIntField(index=True)
|
||||||
|
username = fields.CharField(max_length=100, default=None, null=True)
|
||||||
|
|
||||||
|
bot = fields.ForeignKeyField("models.Bot", related_name="banned_users", on_delete=fields.relational.CASCADE)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
table = "bot_banned_user"
|
||||||
|
8
poetry.lock
generated
8
poetry.lock
generated
@ -1,6 +1,6 @@
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "aerich"
|
name = "aerich"
|
||||||
version = "0.5.4"
|
version = "0.5.7"
|
||||||
description = "A database migrations tool for Tortoise ORM."
|
description = "A database migrations tool for Tortoise ORM."
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
@ -393,12 +393,12 @@ multidict = ">=4.0"
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = "^3.8"
|
python-versions = "^3.8"
|
||||||
content-hash = "c4533872a5037ef7b3ef7f9ada913fd6c0bf761ad642803103d464c90e5bc578"
|
content-hash = "20aec5e4517c3e0bc03d4410544c1c898f0469c9bcfc4f4fecf4c405b1765ded"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
aerich = [
|
aerich = [
|
||||||
{file = "aerich-0.5.4-py3-none-any.whl", hash = "sha256:ce338f42af750632a240648c1d6a052b3cb1b74b8b0d914c3ed30ee3b3b17349"},
|
{file = "aerich-0.5.7-py3-none-any.whl", hash = "sha256:0684eb3d631c7c6e14caf2b2c3b9dad1c15ce8ade5771773c015a302f54ff4f6"},
|
||||||
{file = "aerich-0.5.4.tar.gz", hash = "sha256:067cf4a07b6714a8d6964302cb483fd297f94f8055cbf5489d86abeb03f02540"},
|
{file = "aerich-0.5.7.tar.gz", hash = "sha256:f9ef8796f7a13ba9965eda0aa6840033bbd42b2e4e52c24d8f0dbdb85e4a5187"},
|
||||||
]
|
]
|
||||||
aiocache = [
|
aiocache = [
|
||||||
{file = "aiocache-0.11.1-py2.py3-none-any.whl", hash = "sha256:e55c7caaa5753794fd301c3a2e592737fa1d036db9f8d04ae154facdfb48a157"},
|
{file = "aiocache-0.11.1-py2.py3-none-any.whl", hash = "sha256:e55c7caaa5753794fd301c3a2e592737fa1d036db9f8d04ae154facdfb48a157"},
|
||||||
|
@ -10,7 +10,7 @@ from aioredis import Redis
|
|||||||
import logging
|
import logging
|
||||||
import typing as ty
|
import typing as ty
|
||||||
from olgram.settings import ServerSettings
|
from olgram.settings import ServerSettings
|
||||||
from olgram.models.models import Bot, GroupChat
|
from olgram.models.models import Bot, GroupChat, BannedUser
|
||||||
|
|
||||||
|
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
@ -34,7 +34,7 @@ async def message_handler(message: types.Message, *args, **kwargs):
|
|||||||
_logger.info("message handler")
|
_logger.info("message handler")
|
||||||
bot = db_bot_instance.get()
|
bot = db_bot_instance.get()
|
||||||
|
|
||||||
if message.text and message.text.startswith("/start"):
|
if message.text and message.text == "/start":
|
||||||
# На команду start нужно ответить, не пересылая сообщение никуда
|
# На команду start нужно ответить, не пересылая сообщение никуда
|
||||||
return SendMessage(chat_id=message.chat.id,
|
return SendMessage(chat_id=message.chat.id,
|
||||||
text=bot.start_text + ServerSettings.append_text())
|
text=bot.start_text + ServerSettings.append_text())
|
||||||
@ -42,7 +42,15 @@ async def message_handler(message: types.Message, *args, **kwargs):
|
|||||||
super_chat_id = await bot.super_chat_id()
|
super_chat_id = await bot.super_chat_id()
|
||||||
|
|
||||||
if message.chat.id != super_chat_id:
|
if message.chat.id != super_chat_id:
|
||||||
# Это обычный чат: сообщение нужно переслать в супер-чат
|
# Это обычный чат
|
||||||
|
|
||||||
|
# Проверить, не забанен ли пользователь
|
||||||
|
banned = await bot.banned_users.filter(telegram_id=message.chat.id)
|
||||||
|
if banned:
|
||||||
|
return SendMessage(chat_id=message.chat.id,
|
||||||
|
text="Вы заблокированы в этом боте")
|
||||||
|
|
||||||
|
# сообщение нужно переслать в супер-чат
|
||||||
new_message = await message.forward(super_chat_id)
|
new_message = await message.forward(super_chat_id)
|
||||||
await _redis.set(_message_unique_id(bot.pk, new_message.message_id), message.chat.id)
|
await _redis.set(_message_unique_id(bot.pk, new_message.message_id), message.chat.id)
|
||||||
|
|
||||||
@ -62,6 +70,20 @@ async def message_handler(message: types.Message, *args, **kwargs):
|
|||||||
text="<i>Невозможно переслать сообщение: автор не найден</i>",
|
text="<i>Невозможно переслать сообщение: автор не найден</i>",
|
||||||
parse_mode="HTML")
|
parse_mode="HTML")
|
||||||
chat_id = int(chat_id)
|
chat_id = int(chat_id)
|
||||||
|
|
||||||
|
if message.text == "/ban":
|
||||||
|
user, _ = await BannedUser.get_or_create(telegram_id=message.from_user.id, bot=bot)
|
||||||
|
await user.save()
|
||||||
|
return SendMessage(chat_id=message.chat.id, text="Пользователь заблокирован")
|
||||||
|
|
||||||
|
if message.text == "/unban":
|
||||||
|
banned_user = await bot.banned_users.filter(telegram_id=chat_id).first()
|
||||||
|
if not banned_user:
|
||||||
|
return SendMessage(chat_id=message.chat.id, text="Пользователь не был забанен")
|
||||||
|
else:
|
||||||
|
await banned_user.delete()
|
||||||
|
return SendMessage(chat_id=message.chat.id, text="Пользователь разбанен")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await message.copy_to(chat_id)
|
await message.copy_to(chat_id)
|
||||||
except (exceptions.MessageError, exceptions.BotBlocked):
|
except (exceptions.MessageError, exceptions.BotBlocked):
|
||||||
|
Loading…
Reference in New Issue
Block a user