@@ -174,25 +174,36 @@ export class ClientBase extends EventEmitter {
174
174
}
175
175
176
176
elizaLogger . log ( "Waiting for Twitter login" ) ;
177
- while ( true ) {
178
- await this . twitterClient . login (
179
- username ,
180
- this . runtime . getSetting ( "TWITTER_PASSWORD" ) ,
181
- this . runtime . getSetting ( "TWITTER_EMAIL" ) ,
182
- this . runtime . getSetting ( "TWITTER_2FA_SECRET" ) || undefined
183
- ) ;
184
-
185
- if ( await this . twitterClient . isLoggedIn ( ) ) {
186
- const cookies = await this . twitterClient . getCookies ( ) ;
177
+ let retries = 5 ; // Optional: Set a retry limit
178
+ while ( retries > 0 ) {
179
+ const cookies = await this . twitterClient . getCookies ( ) ;
180
+ if ( await this . twitterClient . isLoggedIn ( ) || ! ! cookies ) {
187
181
await this . cacheCookies ( username , cookies ) ;
182
+ elizaLogger . info ( "Successfully logged in and cookies cached." ) ;
188
183
break ;
189
184
}
190
185
191
- elizaLogger . error ( "Failed to login to Twitter trying again..." ) ;
186
+ try {
187
+ await this . twitterClient . login (
188
+ username ,
189
+ this . runtime . getSetting ( "TWITTER_PASSWORD" ) ,
190
+ this . runtime . getSetting ( "TWITTER_EMAIL" ) ,
191
+ this . runtime . getSetting ( "TWITTER_2FA_SECRET" ) || undefined
192
+ ) ;
193
+ } catch ( error ) {
194
+ elizaLogger . error ( `Login attempt failed: ${ error . message } ` ) ;
195
+ }
196
+
197
+ retries -- ;
198
+ elizaLogger . error ( `Failed to login to Twitter. Retrying... (${ retries } attempts left)` ) ;
199
+
200
+ if ( retries === 0 ) {
201
+ elizaLogger . error ( "Max retries reached. Exiting login process." ) ;
202
+ throw new Error ( "Twitter login failed after maximum retries." ) ;
203
+ }
192
204
193
205
await new Promise ( ( resolve ) => setTimeout ( resolve , 2000 ) ) ;
194
206
}
195
-
196
207
// Initialize Twitter profile
197
208
this . profile = await this . fetchProfile ( username ) ;
198
209
0 commit comments