رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.
m0$tafa

کار با MessageEntity در ربات تلگرام

پست های پیشنهاد شده

m0$tafa    54

گروه دانشجو

ارسال شده در (ویرایش شده)

سلام

همینطور که میدونید  MessageEntity در ربات تلگرام میاد چیزهایی مانند URL - hashtag - user و . . . رو داخل متن تشخیص میده

حالا من میخوام چک کنم که url داخل متن دریافتی ربات هست یا نه.کد من اینه و کار نمیکنه.مشکل از چیه؟

مشکل اینه متغیر $message_en_type چیزی داخلش نمیره. چکار باید انجام بدم؟

<?php
$data = json_decode(file_get_contents("php://input"));
$message_en_type = $data->message->entities->{0}->type;
?>

البته از این کد هم استفاده کردم و کار نکرد:

<?php
$content = file_get_contents("php://input");
$update = json_decode($content, true);
$message_entities = $update["message"]["entities"][0];
$message_en_type = $message_entities["type"];
?>

 

ویرایش شده در توسط m0$tafa

به اشتراک گذاری این ارسال


لینک به ارسال
شایان آباد    6,141

بنیان گذار و مدیر فنی

درود

بنده یه خارجی رو دیدم که از این کد استفاده میکنه :

<?php
/**
 * This file is part of the TelegramBot package.
 *
 * (c) Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Longman\TelegramBot\Entities;

/**
 * Class MessageEntity
 *
 * @link https://core.telegram.org/bots/api#messageentity
 *
 * @method string getType()   Type of the entity. Can be mention (@username), hashtag, bot_command, url, email, bold (bold text), italic (italic text), code (monowidth string), pre (monowidth block), text_link (for clickable text URLs), text_mention (for users without usernames)
 * @method int    getOffset() Offset in UTF-16 code units to the start of the entity
 * @method int    getLength() Length of the entity in UTF-16 code units
 * @method string getUrl()    Optional. For "text_link" only, url that will be opened after user taps on the text
 * @method User   getUser()   Optional. For "text_mention" only, the mentioned user
 */
class MessageEntity extends Entity
{
    /**
     * {@inheritdoc}
     */
    protected function subEntities()
    {
        return [
            'user' => User::class,
        ];
    }
}

 

 

همچنین یکی دیگه هم از این کد استفاده کرده :

<?php

namespace Zelenin\Telegram\Bot\Type;

final class MessageEntity extends Type
{
    /**
     * Type of the entity. One of mention (@username), hashtag, bot_command, url, email, bold (bold text), italic (italic text), code (monowidth string), pre (monowidth block), text_link (for clickable text URLs)
     *
     * @var string
     */
    public $type;

    /**
     * Offset in UTF-16 code units to the start of the entity
     *
     * @var int
     */
    public $offset;

    /**
     * Length of the entity in UTF-16 code units
     *
     * @var int
     */
    public $length;

    /**
     * Optional. For “text_link†only, url that will be opened after user taps on the text
     *
     * @var string
     */
    public $url;

    /**
     * Optional. For “text_mention†only, the mentioned user
     *
     * @var User
     */
    public $user;

    /**
     * @inheritdoc
     */
    public function loadRelated(array $attributes)
    {
        parent::loadRelated($attributes);

        if (isset($attributes['user'])) {
            $this->user = User::create($attributes['user']);
        }
    }
}

 

  • عالی بود 1
  • پسندیدم 1

به اشتراک گذاری این ارسال


لینک به ارسال
m0$tafa    54

گروه دانشجو

ممنون اما متوجه کد های بالا نشدم و کد های خودم رو نوشتم:

$data = json_decode(file_get_contents("php://input"), true);
//این قسمت  message entity ها رو میگیره
$message_entity         = $data['message']['entities'];
$message_entity0_type   = $message_entity['0']['type'];
$message_entity0_length = $message_entity['0']['length'];
$message_entity0_url    = $message_entity['0']['url'];
$message_entity0_user   = $message_entity['0']['user']['username'];
    
$message_entity1_type   = $message_entity['1']['type'];
$message_entity1_length = $message_entity['1']['length'];
$message_entity1_url    = $message_entity['1']['url'];
$message_entity1_user   = $message_entity['1']['user']['username'];
//این قسمت  caption entity ها رو میگیره
$caption_entity1        = $data['message']['caption_entities'];
$caption_entity0_type   = $caption_entity1['1']['type'];
$caption_entity0_length = $caption_entity1['1']['length'];
$caption_entity0_url    = $caption_entity1['1']['url'];
$caption_entity0_user   = $caption_entity1['1']['user']['username'];
    
$caption_entity1_type   = $caption_entity1['1']['type'];
$caption_entity1_length = $caption_entity1['1']['length'];
$caption_entity1_url    = $caption_entity1['1']['url'];
$caption_entity1_user   = $caption_entity1['1']['user']['username'];


//if url in text
    if($message_entity0_type == 'url' || $message_entity1_type == 'url' || $caption_entity0_type == 'url' || $caption_entity1_type == 'url'){
        deleteMessage();
    }
    //if bot command in text
    elseif($message_entity0_type == 'bot_command' || $message_entity1_type == 'bot_command' || $caption_entity0_type == 'bot_command' || 			$caption_entity1_type == 'bot_command'){
        deleteMessage();
    }
    //if hashtag in text
    elseif($message_entity0_type == 'hashtag' || $message_entity1_type == 'hashtag' || $caption_entity0_type == 'hashtag' || 						$caption_entity1_type == 'hashtag'){
        deleteMessage();
    }
    //if email link in text
    elseif($message_entity0_type == 'email' || $message_entity1_type == 'email' || $caption_entity0_type == 'email' || $caption_entity1_type == 'email'){
        deleteMessage();
    } 
    elseif($message_entity0_type == 'mention' || $message_entity1_type == 'mention' || $caption_entity0_type == 'mention' || 					$caption_entity1_type == 'mention'){
        deleteMessage();
    } 
    elseif($message_entity0_type == 'text_link' || $message_entity1_type == 'text_link' || $caption_entity0_type == 'text_link' || 					$caption_entity1_type == 'text_link'){
        deleteMessage();
    }
    elseif($message_entity0_type == 'text_mention' || $message_entity1_type == 'text_mention' || $caption_entity0_type == 'text_mention' || 		$caption_entity1_type == 'text_mention'){
        deleteMessage();

امیدوارم کد ها به هم ریخته نباشن و دوستان بتونن استفاده کنن.

به اشتراک گذاری این ارسال


لینک به ارسال
شایان آباد    6,141

بنیان گذار و مدیر فنی

درود بر شما

باتشکر از حسن نیت شما بابت اشتراک گذاری کدها !

الان مشکلی نیست دیگه ؟

 

  • پسندیدم 1

به اشتراک گذاری این ارسال


لینک به ارسال
m0$tafa    54

گروه دانشجو

در 18 ساعت قبل، شایان آباد گفته است :

درود بر شما

باتشکر از حسن نیت شما بابت اشتراک گذاری کدها !

الان مشکلی نیست دیگه ؟

 

نه مشکلم حل شده متشکرم   :give_rose:

به اشتراک گذاری این ارسال


لینک به ارسال
مهمان
این موضوع برای عدم ارسال قفل گردیده است.

  • مطالب مشابه

    • توسط mahdi.sm
      سلام خدمت اساتید کسی با ViewType کتابخونهhitex_recyclerviewکار کرده؟ یه راهنمایی میخوام من یه ناوبار شبیه این ساختم حالا میخوام رو هر ایتم ناوبار کلیک شده اطلاعات مربوط به همون قسمت رو نمایش بده تو یه اکتیویتی همه ایناها انجام بشه با چند اداپتر ممنون میشم کسی کار کرده راهنمایی کنه

    • توسط namefree
      سلام خسته نباشید دوستان 
      من قبلا با sqlite  دیتا بیس ساختم و مشکلی نداشتم اما وقتی دوباره visual studio  نسخه  professional رو نصب کردم و extensions  مربوط به Sqlite  رو نصب کردم تا دیتا بیس بسازم قسمت مربوط به ساخت دیتا بیس خالی بود اگه کسی میتونه راهکار بده ممنون دوستان وقت گذاشتین.


  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×