@bfun-bot/cli 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/commands/token.js +2 -2
- package/dist/lib/api.js +12 -2
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/commands/token.js
CHANGED
|
@@ -54,9 +54,9 @@ export function registerToken(program) {
|
|
|
54
54
|
}
|
|
55
55
|
// Validate source URL if provided
|
|
56
56
|
if (opts.source) {
|
|
57
|
-
const twitterPattern = /^https?:\/\/(?:(?:www\.)?twitter\.com|x\.com)\/[A-Za-z0-9_]
|
|
57
|
+
const twitterPattern = /^https?:\/\/(?:(?:www\.)?twitter\.com|x\.com)\/[A-Za-z0-9_]+(?:\/status\/\d+)?(?:\?.*)?$/;
|
|
58
58
|
if (!twitterPattern.test(opts.source)) {
|
|
59
|
-
console.error(chalk.red('Error:') + ' --source must be a valid Twitter/X
|
|
59
|
+
console.error(chalk.red('Error:') + ' --source must be a valid Twitter/X URL (e.g. https://x.com/user/status/123 or https://x.com/user)');
|
|
60
60
|
process.exit(1);
|
|
61
61
|
}
|
|
62
62
|
}
|
package/dist/lib/api.js
CHANGED
|
@@ -28,8 +28,14 @@ function friendlyError(err) {
|
|
|
28
28
|
switch (err.statusCode) {
|
|
29
29
|
case 401:
|
|
30
30
|
return "Invalid or expired API key. Run 'bfunbot login' to re-authenticate.";
|
|
31
|
-
case 403:
|
|
32
|
-
|
|
31
|
+
case 403: {
|
|
32
|
+
const detail403 = err.body?.detail;
|
|
33
|
+
if (typeof detail403 === 'string')
|
|
34
|
+
return detail403;
|
|
35
|
+
if (detail403 && typeof detail403 === 'object' && 'message' in detail403)
|
|
36
|
+
return detail403.message;
|
|
37
|
+
return 'Access denied. Your API key may not have the required permissions.';
|
|
38
|
+
}
|
|
33
39
|
case 404:
|
|
34
40
|
return err.body?.detail || 'Not found.';
|
|
35
41
|
case 429: {
|
|
@@ -47,6 +53,10 @@ function friendlyError(err) {
|
|
|
47
53
|
const detail = err.body?.detail;
|
|
48
54
|
if (typeof detail === 'string')
|
|
49
55
|
return detail;
|
|
56
|
+
if (Array.isArray(detail)) {
|
|
57
|
+
// FastAPI 422 validation errors — array of {loc, msg, type}
|
|
58
|
+
return detail.map((e) => e.msg || JSON.stringify(e)).join('; ');
|
|
59
|
+
}
|
|
50
60
|
if (typeof detail === 'object' && detail !== null) {
|
|
51
61
|
const d = detail;
|
|
52
62
|
return d.message || d.error || JSON.stringify(detail);
|