سلام دوستان میخوام حلقه ای را بسازم که با هر بار تکرار حلقه یک آرایه ایجاد کنه ای کار شدنی هست ؟!!
و اینکه چطور اطلاعات که در حلقه درست میشه به داخل اون آرایه ساخته شده بریزه ؟!!
نمایش نسخه قابل چاپ
سلام دوستان میخوام حلقه ای را بسازم که با هر بار تکرار حلقه یک آرایه ایجاد کنه ای کار شدنی هست ؟!!
و اینکه چطور اطلاعات که در حلقه درست میشه به داخل اون آرایه ساخته شده بریزه ؟!!
سلام، چندتا key میخواید وارد یک آرایه بکنید ؟
خروجی :کد:$test = [];
$value = ['a','b'];
foreach ($value as $k) {
$test[] = $k;
}
print_r($test);
کد:Array
(
[0] => a
[1] => b
)
در واقع آرایه ساخته شده در کدی که قرار دادم در آخر به صورت زیر میشود :
اما موقع پرینت خودش key اضافه میکند، حالا شما به صورت زیر عمل کنید :کد:['a','b']
آرایه ساخته شده به شکل زیر میشود :کد:$test[] = [$k];
کد:[
[a],
[b],
]
یه دنیا ممنونم ازت داداش ولی ببین من این را برای کیبورد ربات میخواست استفاده کنم .
طرف سرچ کرد محسن چاوشی میخوام اون api که در تاپیک قبلی بهم کمک کردی تمام اطلاعات را داخل کیورد اینجا بریزه مثلا سطر به سطر
ببین الان این فقط به من مثلا C ارسال میکنه
یعنی آخرین چیزی که نتیجه گیری کرده را برای کاربر ارسال میکنه
فایل پیوست 32614
سلام وقت بخیر
برای ساخت کیبورد در ربات بهتره آموزش سایت زیر رو مطالعه فرمایید.
http://irazasyed.github.io/telegram-...age/keyboards/
8-| -------
سلام
پیشنهاد میکنم از این برنامه استفاده کنید :
https://github.com/akalongman/php-telegram-bot
خیلی کامله و کد نویسی رو به حداقل میرسونه
نمونه چند کیبورد :
کد PHP:
<?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\Commands\UserCommands;
use Longman\TelegramBot\Commands\UserCommand;
use Longman\TelegramBot\Request;
use Longman\TelegramBot\Entities\ReplyKeyboardMarkup;
/**
* User "/keyboard" command
*/
class KeyboardCommand extends UserCommand
{
/**#@+
* {@inheritdoc}
*/
protected $name = 'keyboard';
protected $description = 'Show a custom keybord with reply markup';
protected $usage = '/keyboard';
protected $version = '0.0.6';
/**#@-*/
/**
* {@inheritdoc}
*/
public function execute()
{
$message = $this->getMessage();
$chat_id = $message->getChat()->getId();
$text = $message->getText(true);
$data = [];
$data['chat_id'] = $chat_id;
$data['text'] = 'Press a Button:';
//Keyboard examples
$keyboards = [];
//0
$keyboard[] = ['7','8','9'];
$keyboard[] = ['4','5','6'];
$keyboard[] = ['1','2','3'];
$keyboard[] = [' ','0',' '];
$keyboards[] = $keyboard;
unset($keyboard);
//1
$keyboard[] = ['7','8','9','+'];
$keyboard[] = ['4','5','6','-'];
$keyboard[] = ['1','2','3','*'];
$keyboard[] = [' ','0',' ','/'];
$keyboards[] = $keyboard;
unset($keyboard);
//2
$keyboard[] = ['A'];
$keyboard[] = ['B'];
$keyboard[] = ['C'];
$keyboards[] = $keyboard;
unset($keyboard);
//3
$keyboard[] = ['A'];
$keyboard[] = ['B'];
$keyboard[] = ['C','D'];
$keyboards[] = $keyboard;
unset($keyboard);
//4 (bots 2.0)
$keyboard[] = [
[
'text' => 'request_contact',
'request_contact' => true
],
[
'text' => 'request_location',
'request_location' => true
]
];
$keyboards[] = $keyboard;
unset($keyboard);
$data['reply_markup'] = new ReplyKeyboardMarkup(
[
'keyboard' => $keyboards[1] ,
'resize_keyboard' => true,
'one_time_keyboard' => false,
'selective' => false
]
);
return Request::sendMessage($data);
}
}
یک مثال ساده برای ساخت کیبورد با حلقه نوشتم شاید کمکت کنه، الان 2 تا button با نام های a و b درست میکنه که هر button در یک سطر هست، که با توجه به صحبت های چند پست قبلت اگر نتایج جستجوی را در آرایه $find بریزید مشکلتون حل میشه.
کد:$find = ['a','b'];
$kyboard = [];
foreach ($find as $s) {
$kyboard[] = [$s];
}
HTTPRequest('sendMessage',[
'chat_id' => $userid,
'text' => 'test',
'reply_markup' => json_encode(['keyboard'=>$kyboard])
]);
من به این شکل نوشتم ولی جواب نگرفتم
آخرین را نمایش میداد
نقل قول:
$test = [];
$value = ['a','b','c'];
foreach ($value as $k) {
$keyboard = array(
'keyboard' => array(
array('آخرین موزیک ها'),
$test[$i] = [$k]
),
'resize_keyboard' => true
);
$i++;
}
شرمنده استاد عصبی نشی
من تازه php را شروع کردم
من منظورت
HTTPRequest را نفهمیدم
من آخه اول برای اینکه یک دکمه ساده بسازم اینطوری نوشتم
حالا این چیزی که شما نوشتینا نفهمیدمنقل قول:
$keyboard = array(
'keyboard' => array(
array('آخرین موزیک ها','test'),
),
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$dat a->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
فهمیدم تا جایی که میگید نتیجه جستجو را باید بگیریم
اما این قسمت را که میخواد چطوری اطلاعات را به تلگرام ارسال کنه الان من همین کد را کپی / پست کردم ولی هیچ عملکردی نداشت
شما اگر کل کد یا دسترسی بفرستید راحتر میشه راهنمایی کرد.
من اینطوری نوشتمنقل قول:
<?php
$url = "https://api.telegram.org/bot<tokenbot>/";
$getfile = "https://api.telegram.org/file/bot<tokenbot>/";
$data = json_decode(file_get_contents("php://input"));
if($data->message->text =="/start"){
$keyboard = array(
'keyboard' => array(
array('آخرین موزیک ها','test'),
),
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$dat a->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
}
?>
خب الان کد بالا مشکلی نیست و باید 2 تا Button بسازه، حالا من فرض این میگرم شما یک حلقه داری که نتایج جستجوی را داخل حلقه میریزیم :
کد:$fin = array('chavoshi','yegane');
$kyb = array();
foreach ($find as $s) {
$kyb[] = $s;
}
(در بالا کار بیهوده ای کردیم اما برفرض تاپیک های قبلی شما که فکر کنم از url میخواید json بگیرید و .. به روش بالا باید نتایج را در یک آرایه بریزید)
ساخت کیبورد و ارسال هم به صورت زیر میشود :
کد:$keyboard = array(
'keyboard' => array($kyb),
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$dat a->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
خیلی ممنون استاد .
منم به شکلی که شما توضیح دادید الان عمل کردم
ولی این ارور ها را داد
نقل قول:
[25-Jul-2016 04:52:25 America/Chicago] PHP Notice: Undefined variable: find in /home/----/public_html/----/get.php on line 20
[25-Jul-2016 04:52:25 America/Chicago] PHP Warning: Invalid argument supplied for foreach() in /home/----/public_html/----/get.php on line 20
[25-Jul-2016 04:52:25 America/Chicago] PHP Warning: file_get_contents(https://api.telegram.org/bot1<token>/sendMessage?chat_id=137807115&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup={"keyboard" ;:[[]],"resize_keyboard":true}): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in /home/-----/public_html/----/get.php on line 28
ادیت کنید :
این لاین هم فاصله افتاده درستش کنید :کد:$find = array('chavoshi','yegane');
$kyb = array();
foreach ($find as $s) {
$kyb[] = $s;
}
chat_id='.$dat a->message->chat->id
کد:$keyboard = array(
'keyboard' => array($kyb),
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$data->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
استاد کاش بتونم تمام زحماتتا جبران کنم - یا نقدی یا یک حرکتی در کار
- - - Updated - - -
خیلی معذرت میخوام شرمنده میدونم اذیتت میکنم سوالی که دارم اینه که الان این محسن چاوشی و یگانه را در یک خط نمایش میده
برای اینکه چند خطی بشه باید برای هر اسم یک آرایه تولید بشه باید
همون که گفتید
[$s] اینطوری بگذارم ؟!
من اینطور نوشتم ولی این ارور را داد
نقل قول:
$find = array('chavoshi','yegane');
$kyb = array();
foreach ($find as $s) {
$kyb[] = [$s];
}
$keyboard = array(
'keyboard' => array($kyb),
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$dat a->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
}
[25-Jul-2016 05:34:56 America/Chicago] PHP Warning: file_get_contents(https://api.telegram.org/bot<token>/sendMessage?chat_id=137807115&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup={"keyboard" ;:[[["chavoshi"],["yegane"]]],"resize_keyboard":true}): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in /home/----/public_html/--/get.php on line 33
به این صورت تغییر بدید و امتحان کنید :
کد:$find = array('chavoshi','yegane');
$kyb = array();
foreach ($find as $s) {
$kyb[] = [$s];
}
$keyboard = array(
'keyboard' => $kyb,
'resize_keyboard' => true
);
سلام استاد toosi
شرمنده باز رو عصاب رفتیم
خخ
آقا من برنامه را نوشتم به این حد رفتم جلو ولی وقتی الان
میخواد کیبورد را ارسال کنه برای تلگرام این ارور را میده
$url = "https://api.telegram.org/bot<token>/";
کد PHP:
$data = json_decode(file_get_contents("php://input"));
if($data->message->text =="/start"){
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$json = file_get_contents('http://api.soundcloud.com/users/royaloperahouse/tracks/?client_id=3a4dd5ec3c85a6611d1672d828d835ce&tags=mohsen%20chavoshi&limit=10');
$obj = json_decode($json);
$i = 0;
$x = 0;
foreach ($obj as $k) {
$value[$i] = $k->title;
$k->uri .'/stream?client_id=b1bfa6f7c0c4ed34b9ad55b0cfa34810</br>';
$i++;
}
$kyb = array();
foreach ($value as $s) {
$kyb[] = [$s];
}
$keyboard = array(
'keyboard' => $kyb,
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$data->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
}
ارور :
نقل قول:
[25-Jul-2016 08:55:06 America/Chicago] PHP Warning: file_get_contents(https://api.telegram.org/bot<token>/sendMessage?chat_id=137807115&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup={"keyboard" ;:[["Mohsen Chavoshi - Hamkhaab (Shahrzad)"],["\u0645\u062d\u0633\u0646 \u0686\u0627\u0648\u0634\u064a - \u0686\u0634\u0645\u0647 \u064a \u0637\u0648\u0633\u064a"],["Mohsen Chavoshi - Mah Pishooni"],["Persian DJ Mix 6 - DJ Borhan (part 1)"],["Autumn Mix 2013"],["Mohsen Chavoshi - Kojaei (Ft. Sina Sarlak)"],["\u0645\u062d\u0633\u0646 \u0686\u0627\u0648\u0634\u064a - \u0622\u0644\u0628\u0648\u0645 \u067e\u0627\u0631\u0648\u064a \u0628\u064a \u0642\u0627\u064a\u0642"],["Mohsen Chavoshi - Khaab"],["Mohsen Chavoshi - Khodahafezi Talkh"],["Mohsen Chavoshi - Divooneh"]],"resize_keyboard":true}): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in /home/------/public_html/----/get.php on line 50
اول چک کنید ببینید این باز میشه چون اینجا با آیپی خارجی هم نمیتونم باز کنم، echo کنید ببینید json برمیگردونه.کد:$json = file_get_contents('http://api.soundcloud.com/users/royaloperahouse/tracks/?client_id=3a4dd5ec3c85a6611d1672d828d835ce&tags=mohsen%20chavoshi&limit=10');
بله استاد
http://mobotele.ml/test/test2.php
خروجی میده
بله استاد نتیجه هم اینا میده
http://uplod.ir/ldbtp85v6e3g/soundcloud.txt.htm
تو فایل ربات که گذاشتم با آرایه ادغام کردم ولی بی فایده بود
من دقیقا همین json که گذاشتید را قرار دادم داخل کد های خودتون و به درستی کار میکنه.
http://8pic.ir/images/11prlnmsh84ftoe6e9j9.png
دقیقا همین کد که بالاست گذاشتم
با همون json ولی
[25-Jul-2016 10:53:14 America/Chicago] PHP Warning: file_get_contents(https://api.telegram.org/bot<token>/sendMessage?chat_id=137807115&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup={"keyboard" ;:[["Mohsen Chavoshi - Hamkhaab (Shahrzad)"],["\u0645\u062d\u0633\u0646 \u0686\u0627\u0648\u0634\u064a - \u0686\u0634\u0645\u0647 \u064a \u0637\u0648\u0633\u064a"],["Mohsen Chavoshi - Mah Pishooni"],["Persian DJ Mix 6 - DJ Borhan (part 1)"],["Autumn Mix 2013"],["Mohsen Chavoshi - Kojaei (Ft. Sina Sarlak)"],["\u0645\u062d\u0633\u0646 \u0686\u0627\u0648\u0634\u064a - \u0622\u0644\u0628\u0648\u0645 \u067e\u0627\u0631\u0648\u064a \u0628\u064a \u0642\u0627\u064a\u0642"],["Mohsen Chavoshi - Khaab"],["Mohsen Chavoshi - Khodahafezi Talkh"],["Mohsen Chavoshi - Divooneh"]],"resize_keyboard":true}): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
in /home/-----/public_html/----/get.php on line 49
نقل قول:
$data = json_decode(file_get_contents("php://input"));
if($data->message->text =="/start"){
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$json = file_get_contents('http://api.soundcloud.com/users/royaloperahouse/tracks/?client_id=3a4dd5ec3c85a6611d1672d828d835ce&tags=m ohsen%20chavoshi&limit=10');
$obj = json_decode($json);
$i = 0;
$x = 0;
foreach ($obj as $k) {
$value[$i] = $k->title;
$k->uri .'/stream?client_id=b1bfa6f7c0c4ed34b9ad55b0cfa34810</br>';
$i++;
}
$kyb = array();
foreach ($value as $s) {
$kyb[] = [$s];
}
$keyboard = array(
'keyboard' => $kyb,
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$data->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
من آقای toosi به این شکلم نوشتم
ولی باز فایده نداره
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(E_ALL);
$json = file_get_contents('http://api.soundcloud.com/users/royaloperahouse/tracks/?client_id=3a4dd5ec3c85a6611d1672d828d835ce&tags=m ohsen%20chavoshi&limit=10');
$obj = json_decode($json);
foreach ($obj as $k) {
$value[] = [$k->title];
}
$keyboard = array(
'keyboard' => $value,
'resize_keyboard' => true
);
file_get_contents($url.'sendMessage?chat_id='.$dat a->message->chat->id.'&text=لطفا یکی از گزینه های زیر را انتخاب نمایید&reply_markup='.json_encode($keyboard) );
ولی ارور میده باز
اگه بهصورت
$find = array('chavoshi','yegane'); بنویسم کار میده نمیدنم چیه مشکلش