mirror of
https://github.com/stake-house/poap-reddit-bot.git
synced 2026-01-10 06:27:56 -05:00
changed message data model
This commit is contained in:
11
app.py
11
app.py
@@ -21,7 +21,7 @@ API_SETTINGS = FastAPISettings.parse_obj(SETTINGS['fastapi'])
|
||||
|
||||
from poapbot.scraper import RedditScraper
|
||||
from poapbot.bot import RedditBot
|
||||
from poapbot.models import metadata, database, Event, Attendee, Claim, RequestMessage
|
||||
from poapbot.models import metadata, database, Event, Attendee, Claim, RequestMessage, ResponseMessage
|
||||
|
||||
engine = sqlalchemy.create_engine(DB_SETTINGS.url)
|
||||
metadata.create_all(engine)
|
||||
@@ -31,10 +31,11 @@ app = FastAPI(
|
||||
version=API_SETTINGS.version,
|
||||
openapi_tags=API_SETTINGS.openapi_tags
|
||||
)
|
||||
app.include_router(CRUDRouter(schema=Event, prefix='event'))
|
||||
app.include_router(CRUDRouter(schema=Attendee, prefix='attendee'))
|
||||
app.include_router(CRUDRouter(schema=Claim, prefix='claim'))
|
||||
app.include_router(CRUDRouter(schema=RequestMessage, prefix='request_message'))
|
||||
app.include_router(CRUDRouter(schema=Event))
|
||||
app.include_router(CRUDRouter(schema=Attendee))
|
||||
app.include_router(CRUDRouter(schema=Claim))
|
||||
app.include_router(CRUDRouter(schema=RequestMessage))
|
||||
app.include_router(CRUDRouter(schema=ResponseMessage))
|
||||
app.state.database = database
|
||||
|
||||
logging.config.fileConfig('logging.conf', disable_existing_loggers=True)
|
||||
|
||||
@@ -5,7 +5,7 @@ from datetime import datetime
|
||||
import logging
|
||||
import ormar
|
||||
|
||||
from ..models import database, Event, Claim, Attendee, RequestMessage
|
||||
from ..models import database, Event, Claim, Attendee, RequestMessage, ResponseMessage
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -28,14 +28,14 @@ class RedditBot:
|
||||
logger.info('Received message from reddit, skipping')
|
||||
return
|
||||
|
||||
request_message = await RequestMessage.objects.get_or_none(id=message.id)
|
||||
request_message = await RequestMessage.objects.get_or_none(secondary_id=message.id)
|
||||
if request_message:
|
||||
logger.debug(f'Request message {request_message.id} has already been processed, skipping')
|
||||
await message.mark_read()
|
||||
return
|
||||
else:
|
||||
request_message = RequestMessage(
|
||||
id=message.id,
|
||||
secondary_id=message.id,
|
||||
username=username,
|
||||
created=message.created_utc,
|
||||
subject=message.subject,
|
||||
@@ -67,11 +67,16 @@ class RedditBot:
|
||||
elif expired:
|
||||
comment = await message.reply(f'Sorry, event {event.name} has expired')
|
||||
logger.debug(f'Received request from {username} for event {event.id}, but event has expired')
|
||||
else:
|
||||
comment = await message.reply(f'Sorry, there are no more claims available for {event.name}')
|
||||
logger.debug(f'Received request from {username} for event {event.id}, but no more claims are available')
|
||||
else:
|
||||
comment = await message.reply(f'Invalid event code: {code}')
|
||||
logger.debug(f'Received request from {username} with invalid code {code}')
|
||||
|
||||
await message.mark_read()
|
||||
response_message = ResponseMessage(secondary_id=comment.id, username=comment.author.name.lower(), created=comment.created_utc, body=comment.body, claim=claim)
|
||||
await response_message.save()
|
||||
|
||||
async def run(self):
|
||||
while True:
|
||||
@@ -82,5 +87,5 @@ class RedditBot:
|
||||
except asyncio.CancelledError:
|
||||
return
|
||||
except:
|
||||
logging.error('Encountered error in run loop', exc_info=True)
|
||||
logger.error('Encountered error in run loop', exc_info=True)
|
||||
await asyncio.sleep(1)
|
||||
@@ -19,4 +19,4 @@ class BaseMeta(ormar.ModelMeta):
|
||||
from .event import Event
|
||||
from .attendee import Attendee
|
||||
from .claim import Claim
|
||||
from .message import RequestMessage
|
||||
from .message import RequestMessage, ResponseMessage
|
||||
@@ -10,7 +10,8 @@ class RequestMessage(ormar.Model):
|
||||
class Meta(BaseMeta):
|
||||
tablename = "request_messages"
|
||||
|
||||
id: int = ormar.String(primary_key=True, max_length=100)
|
||||
id: int = ormar.Integer(primary_key=True)
|
||||
secondary_id: str = ormar.String(max_length=100)
|
||||
username: str = ormar.String(max_length=100)
|
||||
created: datetime = ormar.DateTime()
|
||||
subject: str = ormar.String(max_length=1024, nullable=True)
|
||||
@@ -21,7 +22,8 @@ class ResponseMessage(ormar.Model):
|
||||
class Meta(BaseMeta):
|
||||
tablename = "response_messages"
|
||||
|
||||
id: int = ormar.String(primary_key=True, max_length=100)
|
||||
id: int = ormar.Integer(primary_key=True)
|
||||
secondary_id: str = ormar.String(max_length=100)
|
||||
username: str = ormar.String(max_length=100)
|
||||
created: datetime = ormar.DateTime()
|
||||
body: str = ormar.String(max_length=1024)
|
||||
|
||||
Reference in New Issue
Block a user