// ... (ابتدای فایل اصلی افزونه شما)
function ai_telegram_send_now($key) { // این همان تابع قبلی شماست با تغییرات در انتها
$last_error = [];
delete_transient('ai_telegram_error'); // پاک کردن خطای قبلی در ابتدای هر تلاش
$channels = get_option('ai_telegram_channels', []);
$api_key = get_option('openai_api_key');
// بررسی اولیه برای کلید API و وجود کانال
if (!$api_key) {
// $last_error[] = "کلید OpenAI تنظیم نشده است."; // میتوانید خطا را اینجا هم اضافه کنید
// set_transient('ai_telegram_error', $last_error, 60 * 60); // و ترنزینت را ست کنید
return false; // اگر کلید API نیست، ارسال ناموفق است
}
if (!isset($channels[$key])) {
// $last_error[] = "کانال با کلید مشخص شده یافت نشد: " . esc_html($key);
// set_transient('ai_telegram_error', $last_error, 60 * 60);
return false; // اگر کانال وجود ندارد، ارسال ناموفق است
}
$ch = $channels[$key];
// بخش انتخاب موضوع (topic) بدون تغییر باقی میماند
if (!empty($_POST['custom_topic']) && array_key_exists($_POST['custom_topic'], $ch['topics'])) {
$topic = sanitize_text_field($_POST['custom_topic']);
if (trim($topic) === '') {
$last_error[] = "موضوع انتخاب شده معتبر نیست.";
set_transient('ai_telegram_error', $last_error, 60 * 60);
return false; // ناموفق
}
} else {
$available_topics = array_filter(array_keys($ch['topics']), function($t) { return trim($t) !== ''; });
$available_topics = array_diff($available_topics, $ch['used'] ?? []);
if (empty($available_topics)) {
// اگر همه موضوعات استفاده شدهاند، لیست 'used' را خالی میکنیم تا از ابتدا شروع شود
$ch['used'] = [];
$channels[$key]['used'] = []; // بروزرسانی در آرایه اصلی کانالها
update_option('ai_telegram_channels', $channels); // ذخیره تغییر در used
$available_topics = array_filter(array_keys($ch['topics']), function($t) { return trim($t) !== ''; });
}
if (empty($available_topics)) {
$last_error[] = "هیچ موضوعی برای انتخاب در کانال '" . esc_html($ch['name']) . "' وجود ندارد.";
set_transient('ai_telegram_error', $last_error, 60 * 60);
return false; // ناموفق
}
$topic = $available_topics[array_rand($available_topics)];
}
// افزودن موضوع استفاده شده به لیست used
// این بخش باید مطمئن شود که $ch['used'] یک آرایه است
if (!isset($ch['used']) || !is_array($ch['used'])) {
$ch['used'] = [];
}
$ch['used'][] = $topic;
$channels[$key] = $ch; // بروزرسانی کانال در آرایه کلی
update_option('ai_telegram_channels', $channels); // ذخیره لیست used بروز شده
$custom_prompt = $ch['topics'][$topic] ?? ''; // اطمینان از وجود موضوع
$body_prompt = !empty($custom_prompt) ? $custom_prompt : ($ch['prompt'] ?: "یک پست جذاب تلگرامی دربارهی موضوع: $topic بنویس.");
$title_prompt = "فرض کن یک کپیرایتر حرفهای هستی. یک عنوان جذاب برای پست دربارهی '$topic' بنویس.";
$title = ai_call_openai($api_key, $title_prompt, $last_error);
$body = ai_call_openai($api_key, $body_prompt, $last_error);
if (empty($title) || empty($body)) {
// خطاهای OpenAI قبلاً در $last_error توسط ai_call_openai اضافه شدهاند
set_transient('ai_telegram_error', $last_error, 60 * 60);
return false; // ناموفق
}
$text = "$title\n$body\n{$ch['id']}"; // آیدی کانال (یا هشتگ مورد نظر)
$image_url = null;
if (!empty($ch['dalle'])) { // بررسی اینکه آیا dalle فعال است یا نه
$image_prompt = "یک تصویر خلاقانه برای موضوع: $topic"; // یا هر پرامپت دیگری که برای DALL-E مناسب میدانید
$image_url = ai_call_dalle($api_key, $image_prompt, $last_error);
if (!$image_url && !empty($last_error)) { // اگر تولید تصویر ناموفق بود و خطایی وجود داشت
// خطای DALL-E قبلا توسط ai_call_dalle به $last_error اضافه شده
set_transient('ai_telegram_error', $last_error, 60 * 60);
// تصمیم با شماست که آیا بدون تصویر ادامه دهد یا ارسال را ناموفق اعلام کند
// در اینجا اگر تصویر ضروری است، ناموفق برمیگردانیم:
return false; // ناموفق به دلیل خطای تصویر
}
}
// اگر خطایی از مراحل قبلی (OpenAI یا DALL-E) وجود دارد، قبل از ارسال به تلگرام، ناموفق برگردان
// این بررسی مهم است چون ai_send_to_telegram خودش $last_error رو تغییر میده
if (!empty($last_error)) {
set_transient('ai_telegram_error', $last_error, 60 * 60);
return false;
}
ai_send_to_telegram($ch['token'], $ch['id'], $text, $image_url, $last_error);
// بررسی نهایی خطاها پس از تمام عملیات
if (!empty($last_error)) {
set_transient('ai_telegram_error', $last_error, 60 * 60);
return false; // ارسال ناموفق بود
}
// اگر همه مراحل موفقیت آمیز بودند و هیچ خطایی در $last_error وجود نداشت:
// delete_transient('ai_telegram_error'); // اختیاری: پاک کردن ترنزینت خطا در صورت موفقیت کامل
return true; // ارسال موفقیت آمیز بود
}
// ... (بقیه توابع فایل اصلی افزونه شما مثل ai_call_openai, ai_call_dalle, ai_send_to_telegram, ai_telegram_admin_page و add_action('admin_init', ...))
فال کائنات امروز پنجشنبه ۱ خرداد 1404، عنوان موضوعی است که در این پست توضیح داده میشود.
فروردین
مراقب اطرافیان خود به خصوص کسانی که نسبت به شما حسد میورزند، باشید.
حواستان به پساندازتان نیز باشد، ممکن است از لحاظ مالی در مضیقه قرار بگیرید.
اردیبهشت
بر سر دو راهی ماندهاید. باید تصمیم مهمی را بگیرید که نه فقط بر سرنوشت خودتان بلکه ممکن است بر زندگی دیگران نیز تأثیر بگذارد. اگر فکر شده و با مشورت تصمیم بگیرید، موفق خواهید بود.
خرداد
در کارتان پیشرفت خواهید داشت. به زودی مشکلات برطرف شده و طعم آسودگی را خواهید چشید.
تیر
خیر و برکت به سوی شما سرازیر میشود. ممکن است صاحب ارث و میراث شوید و به مال و ثروت دست یابید.
مرداد
خوشبین و امیدوار باشید. هرگاه احساس کردید که پر انرژی و مثبتاندیش هستید، زمان مناسبی است که کار جدیدی را آغاز کنید.
شهریور
مراقب افرادی که تازه ملاقات کردهاید، باشید. ممکن است این افراد، آنگونه که به نظر میرسند، نباشند.
مهر
تا میتوانید خود را سرگرم کار و فعالیت کنید و تا زمانی که هوا برایتان صاف و یکدست شود صبر کنید تا بتوانید موضع جدیدی برای موضوع مدّنظرتان پیدا کنید.
آبان
در مورد رفتارهای دیگران زود قضاوت نکنید. رفتارها و گفتههای دیگران را در ذهنتان نگه دارید و بعد راجعبه آنها نتیجهگیری کنید.
آذر
شما پر انرژی هستید و در زمینههای بسیاری فعالیت میکنید. بهتر است کمی دامنهی فعالیتهای خود را محدود کرده و همهی تلاشتان را در یک زمینه سرمایه گذاری کنید تا نتیجهی بهتری بگیرید.
دی
مراقب فرصتها و منافعی که به دست میآورید باشید و آنها را بیهوده هدر ندهید. موفقیتها و دستاوردهای کوچک پلی برای دستیابی به موفقیتهای بزرگتر است.
بهمن
رازدار باشید. بهتر است برخی از مسائل را تا زمانی که وقت افشا کردنشان فرا نرسیده است پیش خود نگه دارید. برخی از مسائل را به هیچ وجه نباید با کسی در میان بگذارید.
اسفند
خود را از احساساتتان جدا نکنید؛ زیرا گاهی راههای منطقی به تنهایی پاسخگو نیستند.
اینجا می تونی سوالاتت رو بپرسی یا نظرت رو با ما در میون بگذاری: