@@ -39,7 +39,7 @@ public VerificationService(DbUserDataService dbUserData, DiscordSocketClient dis
39
39
40
40
public async Task UserJoinedAsync ( SocketGuildUser user )
41
41
{
42
- _ = Task . Run ( async ( ) =>
42
+ /* _ = Task.Run(async () =>
43
43
{
44
44
RuntimeResult result = await VerifyAsync(user);
45
45
@@ -63,12 +63,14 @@ public async Task UserJoinedAsync(SocketGuildUser user)
63
63
throw;
64
64
}
65
65
}
66
- } ) ;
66
+ });*/
67
67
await Task . CompletedTask ;
68
68
}
69
69
70
70
public async Task < RuntimeResult > VerifyAsync ( SocketGuildUser user )
71
71
{
72
+ _logger . LogTrace ( "Verifying user: {username}" , user . Username ) ;
73
+
72
74
try
73
75
{
74
76
bool isVeryfying = AddVerifyingUser ( user ) ;
@@ -79,8 +81,14 @@ public async Task<RuntimeResult> VerifyAsync(SocketGuildUser user)
79
81
UserData dbUser = _dbUserData . FindById ( user . Id ) ;
80
82
_logger . LogTrace ( "DbUser : {@dbUser} | Id : {@user} | Username: {@username}" , dbUser , user . Id , user . Username ) ;
81
83
82
- OsuUser osuUser ;
83
- if ( dbUser . OsuFriendsKey == null || true ) // Token expires after one day, so we can't use it, but the api developer is working on a fix
84
+ OsuUser osuUser = null ;
85
+
86
+ if ( dbUser . OsuFriendsKey != null )
87
+ {
88
+ osuUser = await CreateOsuUserFromUserDataAsync ( dbUser ) ;
89
+ }
90
+
91
+ if ( osuUser == null )
84
92
{
85
93
// If user doesn't exist in db
86
94
osuUser = await CreateOsuUserAsync ( ) ;
@@ -91,19 +99,12 @@ public async Task<RuntimeResult> VerifyAsync(SocketGuildUser user)
91
99
bool success = await WaitForVerificationStatusAsync ( osuUser ) ;
92
100
if ( ! success )
93
101
{
102
+ RemoveVerifyingUser ( user ) ;
94
103
return VerificationResult . FromError ( $ "Verification failed because it timeouted! Try again with 'verify' command on { user . Guild . Name } ") ;
95
104
}
96
105
// Verification Success
97
106
dbUser . OsuFriendsKey = osuUser . Key ;
98
107
}
99
- else
100
- {
101
- osuUser = await CreateOsuUserFromUserDataAsync ( dbUser ) ;
102
- if ( osuUser == null )
103
- {
104
- return VerificationResult . FromError ( $ "Verification failed! Verify your account again with 'verify' command on { user . Guild . Name } ") ;
105
- }
106
- }
107
108
// Success for both
108
109
( List < SocketRole > grantedRoles , OsuUserDetails osuUserDetails ) = await GrantUserRolesAsync ( user , osuUser ) ;
109
110
await user . SendMessageAsync ( embed : new GrantedRolesEmbed ( user , grantedRoles , osuUserDetails , dbUser ) . Build ( ) ) ;
@@ -162,7 +163,9 @@ private async Task<OsuUser> CreateOsuUserAsync()
162
163
while ( true )
163
164
{
164
165
OsuUser osuUser = _osuFriends . CreateUser ( ) ;
165
- if ( ( await osuUser . GetStatusAsync ( ) ) == null )
166
+ var status = await osuUser . GetStatusAsync ( ) ;
167
+ _logger . LogTrace ( "Verification Status: {status}" , status ) ;
168
+ if ( status == Status . Invalid )
166
169
{
167
170
return osuUser ;
168
171
}
@@ -172,7 +175,9 @@ private async Task<OsuUser> CreateOsuUserAsync()
172
175
private async Task < OsuUser > CreateOsuUserFromUserDataAsync ( UserData userData )
173
176
{
174
177
OsuUser osuUser = _osuFriends . CreateUser ( userData . OsuFriendsKey ) ;
175
- if ( await osuUser . GetStatusAsync ( ) != Status . Completed )
178
+ var status = await osuUser . GetStatusAsync ( ) ;
179
+ _logger . LogTrace ( "OsuDb Status: {status}" , status ) ;
180
+ if ( status != Status . Completed )
176
181
{
177
182
return null ;
178
183
}
@@ -185,7 +190,7 @@ private async Task<bool> WaitForVerificationStatusAsync(OsuUser osuUser)
185
190
for ( int retry = 0 ; retry < 30 ; retry ++ )
186
191
{
187
192
Status ? status = await osuUser . GetStatusAsync ( ) ;
188
- _logger . LogTrace ( "Status: {@status}" , status ) ;
193
+ _logger . LogTrace ( "Verification Status: {@status}" , status ) ;
189
194
if ( status == Status . Completed )
190
195
{
191
196
success = true ;
@@ -199,6 +204,7 @@ private async Task<bool> WaitForVerificationStatusAsync(OsuUser osuUser)
199
204
private async Task < ( List < SocketRole > , OsuUserDetails ) > GrantUserRolesAsync ( SocketGuildUser user , OsuUser osuUser )
200
205
{
201
206
OsuUserDetails osuUserDetails = await osuUser . GetDetailsAsync ( ) ;
207
+ _logger . LogTrace ( "Details: {@details}" , osuUserDetails ) ;
202
208
IReadOnlyCollection < SocketRole > guildRoles = user . Guild . Roles ;
203
209
// Find roles that user should have
204
210
List < SocketRole > roles = OsuRoles . FindUserRoles ( guildRoles , osuUserDetails ) ;
0 commit comments