Skip to content

Commit

Permalink
DB use always (#15)
Browse files Browse the repository at this point in the history
* drop db check in filter

* raise RuntimeError if no DB_URL

* err message
  • Loading branch information
da-maltsev authored Jul 20, 2023
1 parent e478936 commit 04162f8
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 25 deletions.
21 changes: 10 additions & 11 deletions bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@

import text
from filters import ContainsLink, ContainsTelegramContact, ContainsThreeOrMoreEmojies, IsMedia, IsMessageOnBehalfOfChat, with_default_filters
from helpers import DB_ENABLED, enable_logging, in_production, init_sentry
from helpers import enable_logging, in_production, init_sentry


async def log_message(message: Message | None, action: str | None = ''):
"""Create a log entry for telegram message"""

if message is None or not DB_ENABLED() or message.from_user is None:
if message is None or message.from_user is None:
return
from models import LogEntry

Expand Down Expand Up @@ -74,16 +74,15 @@ def delete_messages_that_match(*filters: BaseFilter) -> MessageHandler:
bot.add_handler(delete_messages_that_match(ContainsThreeOrMoreEmojies()))
bot.add_handler(delete_messages_that_match(IsMedia()))

if DB_ENABLED(): # log all not handled messages
from models import create_tables
from models import create_tables

create_tables() # type: ignore
bot.add_handler(
MessageHandler(
filters=TEXT,
callback=lambda update, context: log_message(update.message or update.edited_message),
),
)
create_tables() # type: ignore
bot.add_handler(
MessageHandler(
filters=TEXT,
callback=lambda update, context: log_message(update.message or update.edited_message),
),
)

if in_production():
init_sentry()
Expand Down
3 changes: 1 addition & 2 deletions filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@
from telegram.ext.filters import BaseFilter, MessageFilter

import text
from helpers import DB_ENABLED


class HasNoValidPreviousMessages(MessageFilter):
MIN_PREVIOUS_MESSAGES_COUNT = 3

def filter(self, message: Message) -> bool:
if not DB_ENABLED() or message.from_user is None:
if message.from_user is None:
return True
return self.has_no_valid_previous_messages(user_id=message.from_user.id, chat_id=message.chat_id)

Expand Down
5 changes: 0 additions & 5 deletions helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@
from sentry_sdk.integrations.asyncio import AsyncioIntegration


def DB_ENABLED() -> bool:
return os.getenv('DATABASE_URL') is not None


def in_production() -> bool:
return os.getenv('BOT_NAME', None) is not None

Expand All @@ -32,7 +28,6 @@ def init_sentry() -> None:


__all__ = [
'DB_ENABLED',
'enable_logging',
'in_production',
'init_sentry',
Expand Down
5 changes: 4 additions & 1 deletion models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
from playhouse.db_url import connect
from playhouse.postgres_ext import JSONField

db = connect(os.getenv('DATABASE_URL'))
database_url = os.getenv('DATABASE_URL')
if not database_url:
raise RuntimeError('Please set DATABASE_URL environment variable')
db = connect(database_url)


class LogEntry(pw.Model):
Expand Down
6 changes: 0 additions & 6 deletions tests/tests_filters/test_has_no_valid_previous_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,6 @@ def test_true_if_not_from_user(do_filter, message):
assert do_filter(message) is True


def test_true_if_db_disabled(do_filter, message, mocker):
mocker.patch("helpers.DB_ENABLED", return_value=False)

assert do_filter(message) is True


def test_true_if_has_not_enough_valid_messages(do_filter, message, valid_messages):
LogEntry.get(LogEntry.message_id == 1).delete_instance()

Expand Down

0 comments on commit 04162f8

Please sign in to comment.