#bound_methods
- لیست متود های bound methods :
پارامتر
درصورت پاک شدن پیام ریپلی شده
بصورت پیش فرض true = revoke است.
اگر false باشد پیام ها بصورت یک طرفه پاک میشوند.
ریپلی بر روی پیام.
برای پارامتر های بیشتر به داکیومنت مراجعه کنید.
برای کلیک کردن بر روی دکمه های کیبورد از روش زیر میتوانید کمک بگیرید:
- لیست متود های bound methods :
- $message->getHTML(یک نسخه پیام با تگ های html برمیگرداند.
bool $allowTelegramTags = false
): string
پارامتر
allowTelegramTags مشخص میکند که تگ های خاص تلگرام مثل اسپویلر، منشن و ... نیز نمایش داده شوند یا نه.- $message->getReply(): ?selfگرفتن اطلاعات پیام ریپلی شده.
درصورت پاک شدن پیام ریپلی شده
null برمیگرداند.- $message->delete(bool $revoke = true): voidپاک کردن پیام.
بصورت پیش فرض true = revoke است.
اگر false باشد پیام ها بصورت یک طرفه پاک میشوند.
- $message->reply(
string $message,
ParseMode $parseMode,
...
): \danog\MadelineProto\EventHandler\Message ریپلی بر روی پیام.
برای پارامتر های بیشتر به داکیومنت مراجعه کنید.
برای کلیک کردن بر روی دکمه های کیبورد از روش زیر میتوانید کمک بگیرید:
- کلیک بر روی اولین دکمه ای که مقدارش برابر با label باشد.$message->keyboard->press(
string $label,
bool $waitForResult
);
- کلیک بر روی دکمه با مختصات$message->keyboard->pressByCoordinates(
int $row,
int $column,
bool $waitForResult
);#beta108 #update
قابلیت های جدید :
- اضافه شدن پارامتر اختیاری type به FilterCommand و اضافه شدن ثابت های مربوط به آن(CommandType)
شما میتونید از این به بعد علاوه بر کامند به فیلتر مربوط به کامند تایپ هم بدین
مثال :
تو این حالت ربات فقط به ۲ تا کامند /hello , .hello جواب میده . در حال حاظر فقط ۳ تا حالت
مشکل های حل شده :
- حل مشکل مربوط به IPC در نسخه های Phar
- حل مشکل یکسری از مشکلات داخلی
قابلیت های جدید :
- اضافه شدن پارامتر اختیاری type به FilterCommand و اضافه شدن ثابت های مربوط به آن(CommandType)
شما میتونید از این به بعد علاوه بر کامند به فیلتر مربوط به کامند تایپ هم بدین
مثال :
#[CommandFilter('hello',[CommandType::DOT,Command::SLASH])]
public function replyHello(Message&Incoming $message){
$message->reply('hello');
}تو این حالت ربات فقط به ۲ تا کامند /hello , .hello جواب میده . در حال حاظر فقط ۳ تا حالت
DOT,SLASH,BANG رو میتونید استفاده کنید و حتماباید به صورت ارایه ای از ثابت های CommandType به فیلترتون بدین(فیلتر کامند پارامتر دومش اختیاری هست و به صور دیفالت هر ۳ حالت رو درنظر میگیره)مشکل های حل شده :
- حل مشکل مربوط به IPC در نسخه های Phar
- حل مشکل یکسری از مشکلات داخلی
MadelineProto | Persian Channel
#handle_update #simple_filter هندل آپدیت ها در نسخه 100 بتا با توجه به php8 و قابلیت جدید Attribute مدلین قابلیت جدیدی برای هندل اپدیت ها ارائه کرده. * هندل اپدیت بصورت قدیمی هنوز ممکنه ولی این روش کار رو بسیار آسون کرده. برای هندل آپدیت ها ابتدا یک متود…
دوستان یه چند تا نکته در مورد اپدیت #beta100 به بعد بگم خواهشا این پست رو بخونید و اگه باز سوالی بود زیر همین پست کامنت کنید :
بجز تابع
(اینو من بالای ۱۰۰ بار تو سورس های قدیمی دیدم و میبینید فایل لاگ چقدر مهمه که دنیل هم رو این مورد حساس شده )
(تو این حالت به کل ارور به شما میده و دیگ به کارش ادامه نمیده)
برا استفاده از این توابع بالای کدتون و خارج از کلاس ها و توابع تون استفاده کنید.
(بجز متود
شما باید از استراتژی PSR-4 برا لود کردن پلاگین ها و شناسوندنشون به تابع
همچنین میتونید توابعتون رو داخل فایل به نام
(نیم اسپیستون بهتره
و در اخر این که دنیل در مورد فایل ها خیلی جدی هستش و گفته میخواد استفاده از همشون رو بن کنه ولی در حال حاظر گفته به همین حالت که توضیح دادم رهاشون کرده ...
📕 کانال رسمی مدلین فارسی رو به دوستان خود معرفی کنید.
@Madeline_Farsi
1- اگر از کلاس EventHandler تو کدتون برای کلاس اصلی اکستند کنید :- دیگ نمیتونید از فیلتر ها و توابع bound برا ساده سازی کدتون استفاده کنید- استفاده از توابع بلاک شده و کلاس های بلاک شده (از جمله :file_get_contents, file_put_contents,کدتون به وارنینگ میخوره (ربات به کار خودش ادامه میده).
Amp\file\{get, put},
mysql, mysqli, PDO
بجز تابع
openFileAppendOnly بقیه توابع فایل بلاک هستند- استفاده نکردن یا لیک strict_types=1 یک عدد وارنینگ خواهد داشت. (ربات همچنان به کارش ادامه میده)- استفاده از unlink('MadelineProto.Log') وارنینگ خواهد داشت.(اینو من بالای ۱۰۰ بار تو سورس های قدیمی دیدم و میبینید فایل لاگ چقدر مهمه که دنیل هم رو این مورد حساس شده )
- استفاده از توابع require , include داخل کلاس ها یا متود ها یک عدد fatal-error خواهد داشت.(تو این حالت به کل ارور به شما میده و دیگ به کارش ادامه نمیده)
برا استفاده از این توابع بالای کدتون و خارج از کلاس ها و توابع تون استفاده کنید.
2- اگر کلاستون از کلاس SimpleEventHandler استفاده کنه و اکستند کنه به عنوان کلاس اصلی :- شما میتونید از فیلتر ها یا توابع bound برا راحتی هندل کار هاتون و مسیج هاتون استفاده کنید- استفاده از توابع فایل و کلاس ها و توابع بن شده اینبار fatal-error خواهد داشت و ربات دیگ به کار خودش ادامه نخواهد داد.(بجز متود
openFileAppendOnly)- استفاده نکردن از strict_types=1 یا لیک آن fatal-error خواهد داشت- استفاده از unlink('MadelineProto.Log') به دنبال خود fatal-error خواهد داشت- استفاده از توابع require و include هر کجای کدتون fatal-error خواهد داشت.شما باید از استراتژی PSR-4 برا لود کردن پلاگین ها و شناسوندنشون به تابع
getPluginPaths استفاده کنید.همچنین میتونید توابعتون رو داخل فایل به نام
functions.php بزارید و مدلین بصورت خودکار اونو لود میکنه.(نیم اسپیستون بهتره
MadelinPlugin\name باشه که اینجا name اسم خودتون هستش)و در اخر این که دنیل در مورد فایل ها خیلی جدی هستش و گفته میخواد استفاده از همشون رو بن کنه ولی در حال حاظر گفته به همین حالت که توضیح دادم رهاشون کرده ...
📕 کانال رسمی مدلین فارسی رو به دوستان خود معرفی کنید.
@Madeline_Farsi
👍1
شما برای ذخیره پراپرتی ها و چک کردنشون واستفاده از اونا میومدین از کد زیر استفاده میکردین
حالا راه حل چیه؟ از اونجا که تو این پست گفتم توابع فایل به کل بلاک هستن پس فایل رو میریزیم دور
بجاش میایم یا از amphp/mysql استفاده میکنیم(که اینم برا کسایه که مجبورن و خب به هر طریقی نمیتونن از پراپرتی استفاده کنن)
یا راه حل بهتر استفاده از پراپرتی هاست
حالا چطوری؟ بزارید یه مثال بزنم
اما خب این برا دوستانی که ربات هلپر هم برا سلفشون دارن میتونه بسیار کمک کنه اما چجوری؟
تصور کنید من یه یوزر بات دارم که اسم کلاس پلاگینم همون
اگه بخوام ربات هلپر رو به یوزر بات متصل کنم و اون پراپرتی رو کنترلش کنم(on , off اش رو)
use Amp\File\read;
use Amp\File\write;
// WRONG!
if (!read('online.txt'))
{
write('online.txt', 'on');
}
اما این کد اصلا پیشنهاد نمیشه!!(چرا که شما برا رباتتون قطعا از دیتابیس استفاده میکنید پس چرا یه مرحله بیاین تو فایل بنویسید و فقط سرورتون رو شلوغ کنید یا دیگ بدتر از توابعی مثل file_get_contents و file_put_contents استفاده کنید که کلا کارشون بلاک کردن اون ترد یا پروسه تا اتمام کارشون هست!!!)حالا راه حل چیه؟ از اونجا که تو این پست گفتم توابع فایل به کل بلاک هستن پس فایل رو میریزیم دور
بجاش میایم یا از amphp/mysql استفاده میکنیم(که اینم برا کسایه که مجبورن و خب به هر طریقی نمیتونن از پراپرتی استفاده کنن)
یا راه حل بهتر استفاده از پراپرتی هاست
حالا چطوری؟ بزارید یه مثال بزنم
class OnlinePlugin extends PluginEventHandler
{
private bool $online = true;
public function setOnline(bool $online): void
{
$this->online = $online;
}
public function __sleep() : void
{
return ['online'];
}
#[FilterCommand('online')]
public function toggleOnline(Message $message)
{
$this->online = true;
}
.......
}
استفادش همینقدر راحته شما یه پراپرتی هاتون اول کد تعریف میکنید در نهایت داخل تابع __sleep به صورت ارایه ای از اسم پراپرتی ها ریترن میکنیدشون کد کاملش اینجاستاما خب این برا دوستانی که ربات هلپر هم برا سلفشون دارن میتونه بسیار کمک کنه اما چجوری؟
تصور کنید من یه یوزر بات دارم که اسم کلاس پلاگینم همون
OnlinePlugin هستش و داخلش همونطور که بالا میبینید تابعی هست به اسم setOnline(در واقع setter امون هستش)اگه بخوام ربات هلپر رو به یوزر بات متصل کنم و اون پراپرتی رو کنترلش کنم(on , off اش رو)
$online = true;
$API = new \danog\MadelineProto\API('session.madeline');
$API->getEventHandler(\MadelinePlugin\Danogentili\OnlinePlugin::class)->setOnline($online);#update #beta113 #beta115
- اضافه شدن متود های مربوط به استوری تلگرام
- اضافه شدن لینک دانلود استوری به متود
همچنین سورس کد اون در گیتهاب موجوده.
همچنین میتونید لینک ، فایل لوکال ، یا MessageMedia را با مدلین استوری کنید!
مثال:
- حل شدن مشکل متود
همچنین در صورت ریپلی نشدن پیام روی پیام دیگری null برمیگرداند.
- اضافه شدن متود های
- اضافه شدن تعیین لینک پیشفرض برای متود
- اضافه شدن
- اضافه شدن متود های مربوط به استوری تلگرام
- اضافه شدن لینک دانلود استوری به متود
getDownloadLink
- ربات tgstories_dl_bot توسط مدلین نوشته شده و هر استوری تلگرام را میتونه دانلود کنه!همچنین سورس کد اون در گیتهاب موجوده.
همچنین میتونید لینک ، فایل لوکال ، یا MessageMedia را با مدلین استوری کنید!
مثال:
$media = [
'_' => 'inputMediaUploadedPhoto',
'file' => 'faust.jpg'
];
$MadelineProto->stories->sendStory(
media: $media,
caption: "This story was posted using [MadelineProto](https://t.me/MadelineProto)!",
parse_mode: ParseMode::MARKDOWN,
privacy_rules: [['_' => 'inputPrivacyValueAllowAll']]
);
- پارس مود برای متود های استوری پشتیبانی میشه.- حل شدن مشکل متود
getReply در کانال و سوپرگروههمچنین در صورت ریپلی نشدن پیام روی پیام دیگری null برمیگرداند.
- اضافه شدن متود های
isSelfUser, isSelfBot که مشخص میکنه اکانت یوزر هست یا ربات.- اضافه شدن تعیین لینک پیشفرض برای متود
getDownloadLink در تنظیمات (CLI)- اضافه شدن
DialogMessagePinned بهمراه متود getPinnedMessage
- فیکس شدن باگ startAndLoopMulti#update #beta119
- بررسی توابع کلاس eventHandler و PluginEventHandler و گزارش ارور ها (از جمله use نشدن کلاس ها و ...)
- بهبود کلاس BotApiFileId و اضافه شدن ۳ پارامتر اجباری $siza و $fileName و $protected
- بن شدن توابع exec,shell_exec , proc_open ( از این پس بجای این توابع شما از amphp/process اسفاده میکنید )
- بررسی توابع کلاس eventHandler و PluginEventHandler و گزارش ارور ها (از جمله use نشدن کلاس ها و ...)
- بهبود کلاس BotApiFileId و اضافه شدن ۳ پارامتر اجباری $siza و $fileName و $protected
- بن شدن توابع exec,shell_exec , proc_open ( از این پس بجای این توابع شما از amphp/process اسفاده میکنید )
CopyMsg.php
2.3 KB
> قابلیت کپی کردن هر پیامی
> در پوشه Plugins آپلود کنید
> دستور copy + ریپلای روی پیام
Please open Telegram to view this post
VIEW IN TELEGRAM
MadelineProto | Persian Channel
CopyMsg.php
بر اساس این اسکریپت نوشته شده
میتونید بدون پیش نیاز استفاده کنید
و البته نکته مثبتش اینه که مسیج های به صورت گروپ مدیا هم خودکار ساپورت میشن.
با تشکر از اعضای گروه LabChat🍀 🌺
میتونید بدون پیش نیاز استفاده کنید
و البته نکته مثبتش اینه که مسیج های به صورت گروپ مدیا هم خودکار ساپورت میشن.
با تشکر از اعضای گروه LabChat
Please open Telegram to view this post
VIEW IN TELEGRAM
#update #beta129
اضافه شدن کلاس های
لیست پراپرتی ها و متودها:
اضافه شدن متودهای
اضافه شدن فیلتر
حل مشکل فیلتر
اضافه شدن کلاس های
CallbackQuery, ButtonQuery, ChatButtonQuery, InlineButtonQuery, GameQuery, ChatGameQuery, InlineGameQuery
برای هندل آپدیت ها توسط Filter ها.لیست پراپرتی ها و متودها:
- $query->queryId
آیدی کوئری- $query->userId
آیدی کاربری که روی دکمه کلیک کرده- $query->chatInstance
شناسه چت که برای High Score بیشتر استفاده میشه- $query->data
دیتای دکمه ای که کلیک شده- $query->matchesر.ک FilterRegex
- $query->chatIdبرای کلاس های
Chat*Query - جایی که کیبورد اینلاین ارسال شده است.- $query->messageIdبرای کلاس های
Chat*Query - آیدی مسیج- $query->gameShortName
برای کلاس GameQuery - اسم کوتاه بازی- $query->inlineMessageIdبرای کلاس های
Inline*Query آیدی اینلاین مسیج- $query->editText(...)برای کلاس های
Chat*Query - ادیت متن پیام- $query->answer(ر.ک Answer an inline query
string $message,
bool $alert = false,
?string $url = null,
int $cacheTime = 5 * 60
)
اضافه شدن متودهای
translate و editText به کلاس Messageاضافه شدن فیلتر
FilterButtonQueryData برای کلاس ButtonQuery
سازگاری فیلتر های FilterFromAdmin و FilterRegex با کلاس ButtonQuery
اضافه شدن فیلتر FromAdminOrOutgoing
اضافه شدن متود markdownUrlEscape برای اسکیپ یک لینک هنگام پارس مود markdown
حل مشکل inputMediaPhotoExternal , inputMediaDocumentExternal هنگام ارسال رسانهحل مشکل فیلتر
IsReplyToSelf
حل مشکل رسانه CustomEmoji
حل مشکلات تبدیلات mtproto to bot api
بهبود متود markdownCodeblockEscapeمشکل تماس های VOIP در مدلین حل شد!!!
- در آپدیت بعدی بتا شاهد این خواهیم بود تا بطور کامل بشه از قابلیت های VOIP در تماس ها استفاده کنیم
- ربات (magna luna(@magicalcrazypony هم بزودی آنلاین میشود مثل قبل!
- این قابلیت به طور کامل توسط php پیاده شده این سری!! پس میتونید حتی در هاست هم استفاده کنید(نیازی به سرور نیست برا استفاده ازش)
اطلاعات تکمیلی در آپدیت بعدی ؛)
- در آپدیت بعدی بتا شاهد این خواهیم بود تا بطور کامل بشه از قابلیت های VOIP در تماس ها استفاده کنیم
- ربات (magna luna(@magicalcrazypony هم بزودی آنلاین میشود مثل قبل!
- این قابلیت به طور کامل توسط php پیاده شده این سری!! پس میتونید حتی در هاست هم استفاده کنید(نیازی به سرور نیست برا استفاده ازش)
اطلاعات تکمیلی در آپدیت بعدی ؛)
#update #beta131
- تماس های VoIP
- با متود
همچنین برای هاست میتونید با ربات libtgvoip_bot از این متود استفاده کنید.
- اضافه شدن متود
- متود های جدید:
- contacts.setBlocked
- stories.activateStealthMode
- stories.sendReaction
- متود های تغییر یافته:
اضافه شدن پارامتر
contacts.block
contacts.unblock
contacts.getBlocked
اضافه شدن پارامتر
stories.sendStory
stories.editStory
اضافه شدن پارامتر ها به متود stories.getStoryViewsList :
- تماس های VoIP
- با متود
play هر آهنگ با هر فرمتی بصورت فایل ، لینک پخش کنید.همچنین برای هاست میتونید با ربات libtgvoip_bot از این متود استفاده کنید.
- اضافه شدن متود
downloadToReturnedStream
- آپدیت شدن به layer 161- متود های جدید:
- contacts.setBlocked
- stories.activateStealthMode
- stories.sendReaction
- متود های تغییر یافته:
اضافه شدن پارامتر
my_stories_from به متودهای زیر:contacts.block
contacts.unblock
contacts.getBlocked
اضافه شدن پارامتر
media_areas به متودهای زیر:stories.sendStory
stories.editStory
اضافه شدن پارامتر ها به متود stories.getStoryViewsList :
q
offset
just_contacts
reactions_first
حذف شدن پارامتر های زیر از متود stories.getStoryViewsList :offset_date, offset_id
#update #beta138
فیچر ها :
- اضافه شدن فیلتر های
- اصافه شدن ۳ متود
- اضافه شدن متود getStream به کلاس AbstractMessage
- اضافه شدن سورس کد ربات @libtgvoipbot
- اضافه شدن متود های
- اضافه شدن یک فیلتر برای broadcast progress update
- اضافه شدن متود های
- اضافه شدن ساپورت از کانکشن های Tcp در کال ها
- اضافه شدن کتاب خانه ffmpeg به docker image
فیکس باگ ها :
- فیکس شدن باگ متود های
- فیکس شدن یسری باگ های ریز در VoIP
پ . ن : مدلین نسخه ۷ به طور کامل از دیپیریکت شده و بخاطر یسری تغییرات تلگرام از سمت سرور ها نمیشه از نسخه ۷ استفاده کرد لزا لازم هستش سورس های خودتون به 8 ارتقا بدین
- دنیل یه پیج راهنما برای این که چطور ربات هاتون از ورژن ۷ ببرین روی ۸ زده !
📕 کانال رسمی مدلین فارسی رو به دوستان خود معرفی کنید.
@Madeline_Farsi
فیچر ها :
- اضافه شدن فیلتر های
Outgoing, FilterOutgoing, Running, FilterRunning, Ended, FilterEnded و همچنین SimpleFilter های مربوط به آن برای چک کردن وضعیت کال - اصافه شدن ۳ متود
VoIP::pause/VoIP::resume/VoIP::isPaused به ترتیب برا pause یا resume کردن اهنگ در حال پلی روی کال و چک کردن آیا اهنگ pause است یا خیر - اضافه شدن متود getStream به کلاس AbstractMessage
- اضافه شدن سورس کد ربات @libtgvoipbot
- اضافه شدن متود های
VoIP::getAllCalls() , VoIP::getCurrent() به ترتیب برای گرفتن لیست کل کال های در جریان و گرفتن فایل در حال پلی در کال- اضافه شدن یک فیلتر برای broadcast progress update
- اضافه شدن متود های
Ogg::validateOgg , Tools::getStreamPipe - اضافه شدن ساپورت از کانکشن های Tcp در کال ها
- اضافه شدن کتاب خانه ffmpeg به docker image
فیکس باگ ها :
- فیکس شدن باگ متود های
VoIP::skip() , markdownUrlEscape
- فیکس شدن ارور " getIdFromUsername(): Return value must be of type ?int, string returned" که هنگام استفاده از دیتابیس MYSQL رخ میداد- فیکس شدن یسری باگ های ریز در VoIP
پ . ن : مدلین نسخه ۷ به طور کامل از دیپیریکت شده و بخاطر یسری تغییرات تلگرام از سمت سرور ها نمیشه از نسخه ۷ استفاده کرد لزا لازم هستش سورس های خودتون به 8 ارتقا بدین
- دنیل یه پیج راهنما برای این که چطور ربات هاتون از ورژن ۷ ببرین روی ۸ زده !
📕 کانال رسمی مدلین فارسی رو به دوستان خود معرفی کنید.
@Madeline_Farsi
👍1