Xevion
95a87cb6dd
Implemented 'leaderboard' command
...
This takes use of the previous commit's changes: the Submission.count
column.
2021-02-18 04:07:59 -06:00
Xevion
bd3778182d
Added new Submission column: count
...
Since I'm not good at complex SQLAlchemy syntax and database querying
through SQL or the ORM, I'm simply using a descriptor to update the
count column everytime votes is modified.
2021-02-18 04:06:39 -06:00
Xevion
1b777a3689
Split ContestCog into ContestCommandsCog and ContestEventsCog
...
expected_react_deletions and expected_msg_deletions were moved into bot
.py
There may be more edits included in this that I cannot see.
Added docstrings to get_message and fetch_message
2021-02-18 01:35:33 -06:00
Xevion
39b0dc9a96
Enforce Period.states for on_raw_reaction_add
...
New submissions are also properly enforced via Period.states, in-case
one makes it passed message permissions. Added helper reject method
2021-02-17 22:55:31 -06:00
Xevion
7427763b57
Implement Submission.update and get/fetch message helper functions
...
Added and implemented helper functions for getting and fetching messages
given a payload's integer channel and message IDs.
Implemented Submission.votes list modifications and Submission.update in
code (tested with real bot)
Committed constants.py containing ReactionMarker used in models.py
2021-02-17 05:18:25 -06:00
Xevion
5c70a78798
Ensure Submission.update modifies votes column
...
I forgot to actually add this in properly.
2021-02-17 05:12:52 -06:00
Xevion
20566242ae
Create NestedMutableList/JSON Alembic Migration
...
A commented out portion was added for a simpler add/drop column style.
https://blog.miguelgrinberg.com/post/fixing-alter-table-errors-with-flask-migrate-and-sqlite
2021-02-17 04:57:30 -06:00
Xevion
8d8fe83b5f
Proper basic tests for db.Submission methods
...
Testing for Submission.increment, Submission.decrement with exceptions
Randomized database generation fixture with query test
2021-02-17 03:38:04 -06:00
Xevion
8f67b3c785
Fix MutableJSON issues with NestedMutableList
...
Add new exception SelfVoteException for Submission.increment
Implement new string representation built-in functions for all models
2021-02-17 02:55:55 -06:00
Xevion
35c7d4fb15
Simplify PermissionOverwrite, refactor on_raw_reaction_add's upvote detection
2021-02-17 02:37:04 -06:00
Xevion
ea8bd49216
remove defaults from MutableJSON column, mistakenly flipped comparator
2021-02-16 08:02:43 -06:00
Xevion
33ac0d7792
overhaul voting to support smart single voting protections and enforcing, new exceptions, vote clearing functions inside models, persistence updating
2021-02-16 07:27:02 -06:00
Xevion
0b8aaec332
actually implement message rejection for attachment filtering, TODO'd warning helper func
2021-02-15 05:25:33 -06:00
Xevion
c234487302
minor typehint fixes, make optional arg into optional kwarg, add additional TODOs, add basic attachment filtering
2021-02-15 05:22:22 -06:00
Xevion
d99be7db9d
use payload known params instead of cached message, implement raw_bulk_message_deletion, on_raw_reaction_clear, on_raw_reaction_clear_emoji, helpers.is_upvote for better upvote emote checking
2021-02-15 03:43:00 -06:00
Xevion
69f1f42698
lots of TODO ideas, plan for advance command error handling, leaderboard command idea
2021-02-14 01:49:48 -06:00
Xevion
2178a3ec99
Move Submission votes count logic into model, add improved verification system, add verification that the bot is always reacting to the message (on every reaction add/removal)
2021-02-14 01:48:56 -06:00
Xevion
bb28f38fd9
commit constants.py
2021-02-14 01:47:27 -06:00
Xevion
a5116dc093
finished basic reaction logic/protections and vote tallying, formatting & session.query typehints, correct advance command permissions more
2021-02-14 01:23:00 -06:00
Xevion
0e7bd35333
alembic migrations, init & Submissions.vote column
2021-02-14 01:20:22 -06:00
Xevion
e6d001f2b7
add voting reactions method, typehint the rest of the bot.py session.query calls
2021-02-14 01:19:56 -06:00
Xevion
21781d3529
simplify models.py imports, add typehints, add future TODO ideas, add set_votes safety logging method, move and typehint Period.submissions as a List
2021-02-14 01:19:18 -06:00
Xevion
28d7768340
add permission/cooldown checks, implement permission setting logic, fix state not being advanced, fix guild.submission disparity and use proper typehinting to catch errors like this
2021-02-13 18:31:38 -06:00
Xevion
9e889d8c8c
fix poor test formatting, use inheritted TestDatabase class instead for generating guild/period/submission on the fly (working basic tests), update .gitignore for Pipenv lockfile
2021-02-13 09:30:27 -06:00
Xevion
1f46a98f37
add guilds to database on connection if not already in database, remove old db.py, switch from query filter_by to simple get by primary key
2021-02-13 08:35:00 -06:00
Xevion
00f5b64f3f
fix ambiguous foreign key relationships, Period.state default, fixing back populates
2021-02-13 08:31:09 -06:00
Xevion
7fb9f961b5
first overhaul of tests with new class/sessionmaker;engine/fixture setup
2021-02-13 08:30:13 -06:00
Xevion
ee41885e89
running bot with database, switch to helper function for testing
2021-02-13 08:29:35 -06:00
Xevion
ca10389aea
fully re-implement contest cog with sqlalchemy, begin planning proper period logic in TODOs
2021-02-13 08:28:57 -06:00
Xevion
5978068e9b
add sqlalchemy to bot startup, fix PyCharm typehinting for Session context manager, simplify autocommit and autoclose separate context managers into singular with kwargs
2021-02-13 05:23:12 -06:00
Xevion
c8e0ae1bf2
refactor base ContestBot logic to use new sqlalchemy models, commit exceptions.py
2021-02-13 05:18:34 -06:00
Xevion
91594646c3
simplify period deactivation logic, refactor advance_state logic into check_not_finished wrapper
2021-02-13 05:14:42 -06:00
Xevion
2eb44b56e4
improve models relationships, add state management to Period model
2021-02-13 05:00:20 -06:00
Xevion
7e578fb132
begin switching to sqlalchemy for database management
2021-02-13 03:23:00 -06:00
Xevion
ea825b9a30
switch to pipfile, new tests
2021-02-12 23:19:35 -06:00
Xevion
89b16fdc04
refactor contest to bot folder, work on generic sqlite update query generator, work on new submissions/voting period logic commands, get away from get_submission_channel
2021-02-12 17:46:46 -06:00
Xevion
5defafa36e
begin refactoring into namedtuple style, add period setup, transition to more modular and safer database state management
2021-02-09 14:32:32 -06:00
Xevion
294b34abe0
fixed bot not clearing old submission rows, fixed bot trying to use database before initialization, forgot to commit in deleted submission handling
2021-02-08 01:13:39 -06:00
Xevion
573d8aa06a
automatic deleted submission database updating
2021-02-08 00:49:56 -06:00
Xevion
28c425ba9e
complete submission tracking in database, old submission auto deletion
2021-02-08 00:49:23 -06:00
Xevion
b2dc0fdc91
update README to current progress
2021-02-07 14:42:22 -06:00
Xevion
b748db0866
submission channel config command, basic submission filtering
2021-02-07 14:29:15 -06:00
Xevion
9cb226b502
permissions check, more db helper functions
2021-02-07 14:11:06 -06:00
Xevion
288f1e3a61
switch to bot commands extension style bot setup
2021-02-07 14:10:42 -06:00
Xevion
5f832de5f2
setup row adding/removal on guild changes, improved logging + basic command processing, add logging format to main file
2021-02-07 07:47:51 -06:00
Xevion
4527a3e427
fix async issues, add logging, get database to be created on startup
2021-02-07 07:04:16 -06:00
Xevion
0dadb30680
setup basic logging constants/handlers, write all table creation/update/basic fetching behavior sqlite statements
2021-02-07 06:23:25 -06:00
Xevion
71c6c3936b
setup bot with feature list and command schema/list, update requirements.txt with aiosqlite
2021-02-07 06:22:32 -06:00
Xevion
3807c10feb
gitignore
2021-02-07 05:38:08 -06:00
Xevion
b7d4a810e9
basic bot setup
2021-02-07 05:37:02 -06:00