Update files
This commit is contained in:
parent
4150c03bdb
commit
63b7c0d8f0
|
|
@ -229,8 +229,25 @@ const handleInlineQuery = async (inlineQuery) => {
|
||||||
// Поиск через e621 API
|
// Поиск через e621 API
|
||||||
try {
|
try {
|
||||||
const config = require('../config');
|
const config = require('../config');
|
||||||
|
|
||||||
|
// Проверить наличие API ключа
|
||||||
|
if (!config.e621ApiKey) {
|
||||||
|
log('warn', 'e621 API ключ не настроен для inline query');
|
||||||
|
await axios.post(`${TELEGRAM_API}/answerInlineQuery`, {
|
||||||
|
inline_query_id: queryId,
|
||||||
|
results: [],
|
||||||
|
cache_time: 60
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const E621_USER_AGENT = 'NakamaApp/1.0 (by glpshchn00 on e621; Telegram: @glpshchn00)';
|
const E621_USER_AGENT = 'NakamaApp/1.0 (by glpshchn00 on e621; Telegram: @glpshchn00)';
|
||||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
|
||||||
|
// e621 использует Basic Auth с username:api_key
|
||||||
|
// Если username не указан, используем API ключ как username и пустой пароль
|
||||||
|
// Или можно использовать формат :api_key (пустой username)
|
||||||
|
const username = config.e621Username || config.e621ApiKey;
|
||||||
|
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||||
|
|
||||||
const response = await axios.get('https://e621.net/posts.json', {
|
const response = await axios.get('https://e621.net/posts.json', {
|
||||||
params: {
|
params: {
|
||||||
|
|
@ -241,9 +258,32 @@ const handleInlineQuery = async (inlineQuery) => {
|
||||||
'User-Agent': E621_USER_AGENT,
|
'User-Agent': E621_USER_AGENT,
|
||||||
'Authorization': `Basic ${auth}`
|
'Authorization': `Basic ${auth}`
|
||||||
},
|
},
|
||||||
timeout: 10000
|
timeout: 10000,
|
||||||
|
validateStatus: (status) => status < 500 // Не бросать ошибку для 401/429
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Обработка ошибок авторизации
|
||||||
|
if (response.status === 401) {
|
||||||
|
log('warn', 'e621 API вернул 401 - неверные учетные данные для inline query');
|
||||||
|
await axios.post(`${TELEGRAM_API}/answerInlineQuery`, {
|
||||||
|
inline_query_id: queryId,
|
||||||
|
results: [],
|
||||||
|
cache_time: 60
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Обработка rate limit
|
||||||
|
if (response.status === 429) {
|
||||||
|
log('warn', 'e621 rate limit (429) для inline query');
|
||||||
|
await axios.post(`${TELEGRAM_API}/answerInlineQuery`, {
|
||||||
|
inline_query_id: queryId,
|
||||||
|
results: [],
|
||||||
|
cache_time: 60
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
let postsData = [];
|
let postsData = [];
|
||||||
if (Array.isArray(response.data)) {
|
if (Array.isArray(response.data)) {
|
||||||
postsData = response.data;
|
postsData = response.data;
|
||||||
|
|
@ -264,8 +304,13 @@ const handleInlineQuery = async (inlineQuery) => {
|
||||||
source: 'e621'
|
source: 'e621'
|
||||||
}));
|
}));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
// Логировать только если это не 401/429 (они уже обработаны выше)
|
||||||
|
if (error.response?.status !== 401 && error.response?.status !== 429) {
|
||||||
logError('Ошибка поиска e621 для inline query', error);
|
logError('Ошибка поиска e621 для inline query', error);
|
||||||
}
|
}
|
||||||
|
// Вернуть пустой результат вместо падения
|
||||||
|
searchResults = [];
|
||||||
|
}
|
||||||
} else if (source === 'anime') {
|
} else if (source === 'anime') {
|
||||||
// Поиск через Gelbooru API
|
// Поиск через Gelbooru API
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ module.exports = {
|
||||||
gelbooruUserId: process.env.GELBOORU_USER_ID || '1844464',
|
gelbooruUserId: process.env.GELBOORU_USER_ID || '1844464',
|
||||||
|
|
||||||
// e621 API
|
// e621 API
|
||||||
e621Username: process.env.E621_USERNAME || 'glpshchn00',
|
e621Username: process.env.E621_USERNAME || '', // Опционально, можно оставить пустым
|
||||||
e621ApiKey: process.env.E621_API_KEY || 'MWYMw57r2Gu6Yxvw1YvepNvZ',
|
e621ApiKey: process.env.E621_API_KEY || 'MWYMw57r2Gu6Yxvw1YvepNvZ',
|
||||||
|
|
||||||
// Frontend URL
|
// Frontend URL
|
||||||
|
|
|
||||||
|
|
@ -88,10 +88,12 @@ router.get('/proxy/:encodedUrl', async (req, res) => {
|
||||||
'Referer': urlObj.origin
|
'Referer': urlObj.origin
|
||||||
};
|
};
|
||||||
|
|
||||||
// Если это e621, добавляем авторизацию (если есть учетные данные)
|
// Если это e621, добавляем авторизацию (если есть API ключ)
|
||||||
if (urlObj.hostname.includes('e621.net') && config.e621Username && config.e621ApiKey) {
|
if (urlObj.hostname.includes('e621.net') && config.e621ApiKey) {
|
||||||
try {
|
try {
|
||||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
// Если username не указан, используем API ключ как username
|
||||||
|
const username = config.e621Username || config.e621ApiKey;
|
||||||
|
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||||
headers['Authorization'] = `Basic ${auth}`;
|
headers['Authorization'] = `Basic ${auth}`;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn('⚠️ Ошибка создания Basic auth для e621:', error.message);
|
console.warn('⚠️ Ошибка создания Basic auth для e621:', error.message);
|
||||||
|
|
@ -141,7 +143,9 @@ router.get('/furry', authenticate, async (req, res) => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Базовая авторизация для e621 API
|
// Базовая авторизация для e621 API
|
||||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
// Если username не указан, используем API ключ как username
|
||||||
|
const username = config.e621Username || config.e621ApiKey;
|
||||||
|
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||||
|
|
||||||
const response = await axios.get('https://e621.net/posts.json', {
|
const response = await axios.get('https://e621.net/posts.json', {
|
||||||
params: {
|
params: {
|
||||||
|
|
@ -347,7 +351,9 @@ router.get('/furry/tags', authenticate, async (req, res) => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Базовая авторизация для e621 API
|
// Базовая авторизация для e621 API
|
||||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
// Если username не указан, используем API ключ как username
|
||||||
|
const username = config.e621Username || config.e621ApiKey;
|
||||||
|
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||||
|
|
||||||
const response = await axios.get('https://e621.net/tags.json', {
|
const response = await axios.get('https://e621.net/tags.json', {
|
||||||
params: {
|
params: {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue