Compare commits

...

5 Commits

Author SHA1 Message Date
c9b6ce8f60 fix: Typo in community schema. 2025-09-04 01:08:32 +10:00
0363dc2bcd Catch IndexError for user upgrade. 2025-09-02 09:04:14 +10:00
ce46bd49fe fix: Remove transaction block. 2025-09-02 08:57:04 +10:00
4653689e5e fix: Profile component typo. 2025-09-02 07:55:41 +10:00
e8e44b7da8 Add twitch_setup export. 2025-09-02 07:54:08 +10:00
4 changed files with 27 additions and 29 deletions

View File

@@ -1 +1 @@
from .profiles import setup
from .profiles import setup, twitch_setup

View File

@@ -41,7 +41,7 @@ CREATE UNIQUE INDEX profiles_twitch_userid ON profiles_twitch (userid);
CREATE TABLE communities(
communityid INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
migrated INTEGER REFERENCES user_profiles (profileid) ON DELETE CASCADE ON UPDATE CASCADE,
migrated INTEGER REFERENCES communities (communityid) ON DELETE CASCADE ON UPDATE CASCADE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
last_seen TIMESTAMPTZ NOT NULL DEFAULT NOW(),
_timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()

View File

@@ -6,5 +6,5 @@ if TYPE_CHECKING:
async def setup(bot: 'Bot'):
from .component import ProfileComponent
await bot.add_component(ProfileComponent(bot))
from .component import ProfilesComponent
await bot.add_component(ProfilesComponent(bot))

View File

@@ -41,22 +41,22 @@ class ProfilesComponent(cmds.Component):
Fetch or create the profile for the given user.
"""
userid = str(user.id)
async with self.bot.dbconn.connection() as conn:
self.bot.dbconn.conn = conn
async with conn.transaction():
profile = await self.profiles.get_profile_twitch(userid)
if profile is None:
args = {}
try:
user = await user.user()
args['nickname'] = user.display_name
args['avatar'] = user.profile_image.url
except twitchio.HTTPException:
pass
profile = await UserProfile.create(**args)
await TwitchProfileLink.create(profileid=profile.profileid, userid=userid)
elif touch:
await profile.update(last_seen=utc_now())
# TODO: Transaction
profile = await self.profiles.get_profile_twitch(userid)
if profile is None:
args = {}
try:
user = await user.user()
args['nickname'] = user.display_name
args['avatar'] = user.profile_image.url
except twitchio.HTTPException:
pass
except IndexError:
pass
profile = await UserProfile.create(**args)
await TwitchProfileLink.create(profileid=profile.profileid, userid=userid)
elif touch:
await profile.update(last_seen=utc_now())
return profile
@@ -70,14 +70,12 @@ class ProfilesComponent(cmds.Component):
Fetch or create the community for this channel.
"""
chanid = channel.id
async with self.bot.dbconn.connection() as conn:
self.bot.dbconn.conn = conn
async with conn.transaction():
comm = await self.profiles.get_community_twitch(chanid)
if comm is None:
comm = await Community.create()
await TwitchCommunityLink.create(channelid=chanid, communityid=comm.communityid)
elif touch:
await comm.update(last_seen=utc_now())
# TODO: Transaction
comm = await self.profiles.get_community_twitch(chanid)
if comm is None:
comm = await Community.create()
await TwitchCommunityLink.create(channelid=chanid, communityid=comm.communityid)
elif touch:
await comm.update(last_seen=utc_now())
return comm