const text = `*Привет, друг!* В этом боте ты сможешь создать точную копию скриншотов переводов и чеков по операциям.
Доступны платформы Андроида и Айфона! Выбери нужную тебе кнопку внизу экрана.
Используя дальше этот бот, Вы подтверждаете что ознакомились с условиями использования этого бота и принимаете их - /usloviya`;
bot.sendMessage(msg.chat.id, text, {
parse_mode: 'Markdown',
reply_markup: {
resize_keyboard: true,
keyboard: mainkb
}
});
$data = ['type' => 'text', 'code' => $code];
$data = http_build_query($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
[id<id>|<text>]
, где id — айди пользователя, text — текст упоминания$allow_comments = [
'noindex',
'/noindex'
];
$this->_html = preg_replace_callback(
'/<!--([\\s\\S]*?)-->/',
function ($matches) use($allow_comments) {
[$match, $com] = $matches;
return in_array($com, $allow_comments) ? $match : '';
},
$this->_html
);
$data = [ "error" => "0" ];
echo json_encode($data);
const acc = arr.reduce((acc, el) => ({...acc, [el]: (acc[el] || 0) + 1}), {});
const sortedArr = Object.keys(acc).sort((a, b) => acc[b] - acc[a]);
code должен возвращать JSON-объект, описывающий виджет. Элементы виджета могут содержать только внутренние ссылки на vk.com (кроме away.php) и vk.me.
В общем случае параметр code выглядит так:
return { widget };
const widget = {
"title": "My Table",
"title_url": "https://link",
"title_counter": 31,
// ...
};
vk.api.appWidgets.update({
type: `Table`,
code: 'return ' + JSON.stringify(widget) + ';'
})
type ValueOf<T> = T[keyof T];
const enum BlockType {
Paragpraph = 'PARAGRAPH',
Image = 'IMAGE',
List = 'LIST',
}
interface BodyTypes {
[BlockType.Paragpraph]: string;
[BlockType.Image]: File;
[BlockType.List]: string[];
}
interface IBlock<T extends BlockType> {
type: T;
body: BodyTypes[T];
}
type TBlock = ValueOf<{ [P in BlockType]: IBlock<P> }>;
// type TBlock = IBlock<BlockType.Paragpraph> | IBlock<BlockType.Image> | IBlock<BlockType.List>;
function x(b: TBlock) {
if (b.type === BlockType.Paragpraph) {
// b.body is string
} else if (b.type === BlockType.Image) {
// b.body is File
}
}
На входе есть массив, который я перевожу в объект.нет, метод map возвратит массив
const b = Object.fromEntries(a); // {1: "Вася", 2: "Петя", 3: "Коля", 4: "Федя"}
$arr1 = [3,4,5,6,7,8];
$arr2 = [10,11,12];
function array_shuffle($a, $b) {
$count = count($b);
$indexes = array_rand($a, $count);
$result = [];
for ($i = 0, $l = count($a); $i < $l; ++$i) {
for ($j = 0; $j < $count; ++$j) {
if ($indexes[$j] === $i) {
$result[] = $b[$j];
break;
}
}
$result[] = $a[$i];
}
return $result;
}
print_r(array_shuffle($arr1, $arr2));
async function getUserId(message) {
if (message.hasReplyMessage) {
return message.replyMessage.senderId;
} else if (message.hasForwards) {
return message.forwards[0].senderId;
} else {
const res = await vk.snippets.resolveResource(message.$match[1]);
return res.id;
}
}
vk.updates.hear(/^(?:-добавить|-друг)\s?([^]+)?/i, async (message) => {
if(message.senderId !== 348543284) return message.send(`У вас недостаточно прав!`)
let userId = await getUserId(message);
let tex = `Денис отправил/одобрил заявку!`
vk.api.friends.add({ user_id: userId, text: tex })
return message.send(`Вы отправили/одобрили заявку`);
});