RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-451327

Eugene's questions

Martin Hope
Eugene
Asked: 2022-08-01 22:29:14 +0000 UTC

为什么更新时传给mysql的是空值?

  • 0

我有两个变量有值,需要使用sql的update函数传给数据库:

function update_telegram_info($telegram_user_id, $telegram_username, $info_user_id)
{
    global $pdo;
    $sql = "UPDATE users_projects
        SET username = :telegram_username 
        AND user_id = :telegram_user_id
        WHERE info_user_id = :info_user_id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':telegram_user_id', $telegram_user_id, PDO::PARAM_INT);
    $stmt->bindParam(':telegram_username', $telegram_username, PDO::PARAM_STR);
    $stmt->bindParam(':info_user_id', $info_user_id, PDO::PARAM_INT);
    $stmt->execute();
}

$get = get_user_info($user_id);

$telegram_user_id = $get['user_id'];
$telegram_username = $get['info_username'];
$info_user_id = $get['info_user_id'];

update_telegram_info($telegram_user_id, $telegram_username, $info_user_id);

变量$telegram_user_id且不为$telegram_username空,$info_user_id传递变量以便将值\u200b\u200bare写入所需的行

这是它在数据库中的样子:

在此处输入图像描述

值应该写在第1行和第4行

我不明白为什么那里有零,我什至检查了数据类型

在此处输入图像描述

php mysql
  • 1 个回答
  • 43 Views
Martin Hope
Eugene
Asked: 2022-07-10 00:37:54 +0000 UTC

发送电报请求时如何出错?

  • 0

我需要从数据库中获取所有用户 ID 并检查其中哪些人阻止了机器人以便最终计算它们,我正在尝试通过以下方式执行此操作:

// Отправка запросов в Telegram
function sendRequest($method, $post = '') {
$ch = curl_init('https://api.telegram.org/bot' . BOT_TOKEN . '/' . $method);

if ($post) {
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$user_count = count(get_all_users_id()); // Получить количество юзеров всего
$blocked_users = 0;
for ($i = 0; $i < $user_count; $i++) {
    $users_id_get = get_all_users_id()[$i];
    $all_users = "\n" . $users_id_get['user_id'];

    // Отправляю каждому пользователю запрос методом sendChatAction
    try {
        $post = [
            'chat_id' => $users_id_get['user_id'],
            'action' => 'typing'
        ];
        sendRequest('sendChatAction', $post);
    // Но эта часть не работает, заблокировавшие бота пользователи не добавляются в 
    // счетчик переменной $blocked_users и сообщение с ошибкой не выводится
    } catch (Exception $ex) {
        $post = [
            'chat_id' => $user_id,
            'text' => 'data: ' . $ex->getMessage() . ' user_id: ' . $users_id_get['user_id']
        ];
        sendRequest('sendMessage', $post);
        $blocked_users = $blocked_users + 1;
    }
}

try...catch 应该在哪里完成?在 sendRequest 函数本身或已经收到每个 user_id 并发送请求时(如果是,为什么不显示错误)?

php исключения
  • 1 个回答
  • 29 Views
Martin Hope
Eugene
Asked: 2022-07-09 06:28:54 +0000 UTC

如何逐行显示纯文本?

  • 1

文本是一个大列表,如下面的屏幕截图所示

在此处输入图像描述

我想这样总结:

在此处输入图像描述

什么功能可以做到这一点?

php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-06-12 14:18:25 +0000 UTC

电报机器人不处理内联键盘

  • 0

我写了一个机器人,在命令下,它应该使用动态内联键盘显示一条消息,但它只显示一个错误 - 错误请求:无法解析内联键盘按钮:InlineKeyboardButton 必须是一个对象

        for ($i = 0; $i < $array_count; $i++) {
        $token_get = secret_token_get($user_id)[$i];
        $token_symbols = substr($token_get['token'], -5);

        global $buttons;
        $buttons = secret_token_get($user_id);
        $buttons = array_map(function ($token_symbols) {
            return [[['text' => $token_symbols, 'callback_data' => $token_symbols]]];
            }, $buttons);
        }
    $post = [
        'chat_id' => $user_id,
        'text' => '<b>All your private tokens are listed here: </b>',
        'parse_mode' => 'html',
        'reply_markup' => inline_keyboard($buttons)
    ];
    sendRequest('sendMessage', $post);

电报回复:

{
"chat_id": 915597301,
"text": "<b>All your private tokens are listed here: </b>",
"parse_mode": "html",
"reply_markup": "{\"inline_keyboard\":[[[{\"text\":{\"token\":\"123\"},\"callback_data\":{\"token\":\"123\"}}]],[[{\"text\":{\"token\":\"321\"},\"callback_data\":{\"token\":\"321\"}}]],[[{\"text\":{\"token\":\"213\"},\"callback_data\":{\"token\":\"213\"}}]]]}"
}

Bad Request: can't parse inline keyboard button: InlineKeyboardButton must be an Object
php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-03-22 04:12:28 +0000 UTC

如何从不同的数组中获取相同的键?

  • 0

单击按钮时如何从数组中获取文本,其中键重复(例如,cocktail_history),但是有几个这样的数组并且它们是分开编写的(例如,有3个这样的数组,每个有自己的鸡尾酒清单,但它们的钥匙到处都是重复的)?

数组和主要代码:

$the_unforgettables = [
    'negroni' => [
        'cocktail_name' => 'name1',

        'cocktail_history' => 'history1',

        'cocktail_composition' => 'composition1',

        'cocktail_cooking' => 'cooking1',

        'cocktail_photo' => 'photo1'
    ],
];

$$contemporary_classic = [
    'white_russian' => [
        'cocktail_name' => 'name2',

        'cocktail_history' => 'history2',

        'cocktail_composition' => 'composition2',

        'cocktail_cooking' => 'cooking2',

        'cocktail_photo' => 'photo2'
    ],
];

if ($the_unforgettables[$callback_data]) {
$cocktail = $the_unforgettables[$callback_data];
$post = [
    'chat_id' => $chat_id,
    'message_id' => $message_id,
    'text' => $cocktail['cocktail_name'] . "\n\n" . "Ссылка на фото: " . $cocktail['cocktail_photo'],
    'parse_mode' => 'html',
    $cocktail_buttons = [
        [['text' => 'Краткая история', 'callback_data' => 'short_story']],
        [['text' => 'Состав', 'callback_data' => 'composition']],
        [['text' => 'Приготовление', 'callback_data' => 'preparation']],
        [['text' => '<<< В меню', 'callback_data' => 'start']]
    ],
    'reply_markup' => inline_keyboard($cocktail_buttons)
];
sendRequest('editMessageText', $post);
} elseif ($contemporary_classic[$callback_data]) {
$cocktail = $contemporary_classic[$callback_data];
$post = [
    'chat_id' => $chat_id,
    'message_id' => $message_id,
    'text' => $cocktail['cocktail_name'] . "\n\n" . "Ссылка на фото: " . $cocktail['cocktail_photo'],
    'parse_mode' => 'html',
    $cocktail_buttons = [
        [['text' => 'Краткая история', 'callback_data' => 'short_story']],
        [['text' => 'Состав', 'callback_data' => 'composition']],
        [['text' => 'Приготовление', 'callback_data' => 'preparation']],
        [['text' => '<<< В меню', 'callback_data' => 'start']]
    ],
    'reply_markup' => inline_keyboard($cocktail_buttons)
];
sendRequest('editMessageText', $post);

switch ($callback_data) {
case 'short_story':
    $post = [
        'chat_id' => $chat_id,
        'message_id' => $message_id,
        'text' => ???,
        'parse_mode' => 'html'
    ];
    sendRequest('editMessageText', $post);
    break;
}
php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-09-23 23:23:00 +0000 UTC

不是来自数据库的字符串,而是显示一个数组

  • -1

当用户向机器人写消息时,他将文本保存在数据库中并通过一个按钮发送他的消息,当你点击它时,你可以看到写了什么消息

由于以下功能,应显示用户的消息:

function message_get($user_id) {
global $db;
$chat_id = mysqli_real_escape_string($db,$user_id);
$query = "SELECT message_id, user_id as chat_id,  message as `text` 
    FROM `secret_messages` 
    WHERE user_id='$chat_id' ORDER BY id DESC LIMIT 1";
$result = mysqli_query($db, $query);
return $result->fetch_assoc();
}

在主代码中,这个函数是和参数一起使用的text,即bot自己写一条消息,加上用户的消息

switch ($callback_data) {
case 'view_message':

$post = [
    'chat_id' => $chat_id,
    'message_id' => $message_id,
    'text' => 'Текст секретного сообщения: ' . message_get($user_id),
];
sendRequest('editMessageText', $post);
}

问题是机器人输出的不是来自用户的消息,而是数组

在此处输入图像描述

如何跟踪何时显示不正确的结果以及为什么会发生这种情况?

在此处输入图像描述

消息本身安全地存储在数据库中

php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-08-30 21:57:24 +0000 UTC

单击按钮后如何显示响应?

  • 0

出现了以下问题 - 我在电报中编写了一个机器人(没有库),将一个 webhook 连接到它,并在此时卡住了按钮,或者更确切地说,在单击它们后处理请求。理论上,点击后,机器人应该会收到另一条消息,但最终没有任何回应。

机器人可执行代码:

<?php

include 'config.php'; // Токен бота
include 'functions.php'; // Основные функции

// В теле запроса содержится JSON, php://input читает сырой запрос, а json_decode расшифровывает в виде массива
$update = json_decode(file_get_contents('php://input'), JSON_OBJECT_AS_ARRAY);

$chat_id = $update['message']['chat']['id']; // Определяет ID чата
$message = $update['message']['text']; // Определяет текст сообщения
$message_id = ['callback_query']['message']['message_id']; // Определяет ID сообщения

$callback_query = $update['callback_query'];
$callback_query_id = $callback_query['id'];
$callback_data = $callback_query['data'];

// Делается запрос
$method = 'setWebhook';
$url = 'https://api.telegram.org/bot' . BOT_TOKEN . '/' . $method;
$options = [
    'url' => 'https://example.ru/bot.php'
];

// То, что возвращается из запроса
$response = file_get_contents($url . '?' . http_build_query($options));
var_dump($response);

if (strpos($message, "/help") === 0) { // Команда /help
    $post = [
      'chat_id' => $chat_id,
      'text' => 'Эта памятка создана для объяснения различных
терминов, посуды',
        $help_buttons = [
            [['text' => 'Термины 📃', 'callback_data' => 'terms']],
            [['text' => 'Посуда / Штучки 🥄', 'callback_data' => 'dishes']]
        ],
        'reply_markup' => inline_keyboard($help_buttons),
    ];
    sendRequest('sendMessage', $post);
} else {
// Начальное сообщение
    $post = [
        'chat_id' => $chat_id,
        'text' => 'Давай определимся с категорией коктейлей:',
        $main_menu = [
            [['text' => 'Незабываемые', 'callback_data' => 'the_unforgettables']],
            [['text' => 'Современная Классика', 'callback_data' => 'contemporary_classic']],
            [['text' => 'Напитки Новой Эры', 'callback_data' => 'new_era_drinks']]
        ],
        'reply_markup' => inline_keyboard($main_menu)
    ];
    sendRequest('sendMessage', $post);
}

switch ($callback_data) {
    case 'the_unforgettables':
        $post = [
            'chat_id' => $chat_id,
            'text' => 'Отлично, теперь выбери любой коктейль из списка:',
            $InlineTheUnforgettables = [
                [['text' => 'Негрони', 'callback_data' => 'negroni']],
                [['text' => 'Манхэттен', 'callback_data' => 'manhattan']],
                [['text' => 'Американо', 'callback_data' => 'americano']]
            ],
            'reply_markup' => inline_keyboard($InlineTheUnforgettables),
        ];
        sendRequest('sendMessage', $post);
        break;
}

消息发送功能:

function sendRequest($method, $params = [])
{
    if (!empty($params)) {
        $url = BOT_URL . $method . '?' . http_build_query($params);
    } else {
        $url = BOT_URL . $method;
    }
    return json_decode(
        file_get_contents($url),
        JSON_OBJECT_AS_ARRAY
    );
}

同时,webhook 中挂起如下错误:

string(64) "{"ok":true,"result":true,"description":"Webhook is already set"}"
Warning: file_get_contents(https://api.telegram.org/bot[BOT_TOKEN]/sendMessage?
text=%D0%94%D0%B0%D0%B2%D0%B0%D0%B9+%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B8%D0%B
C%D1%81%D1%8F+%D1%81+%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B5%D0%B9+%D0%BA%
D0%BE%D0%BA%D1%82%D0%B5%D0%B9%D0%BB%D0%B5%D0%B9%3A&0%5B0%5D%5B0%5D%5Btext%5D=%D0%9D%D0%B5
%D0%B7%D0%B0%D0%B1%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5+%E2%99%BE&0%5B0%5D%5B0%5D%5B
callback_data%5D=the_unforgettables&0%5B1%5D%5B0%5D%5Btext%5D=%D0%A1%D0%BE%D0%B2%D1%80%D0
%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F+%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D0%BA%D0%B0+
%F0%9F%8D%B9&0%5B1%5D%5B0%5D%5Bcallback_data%5D=contemporary_classic&0%5B2%5D%5B0%5D%5Bte
xt%5D=%D0%9D%D0%B0%D0%BF%D0%B8%D1%82%D0%BA%D0%B8+%D0%9D%D0%BE%D0%B2%D0%BE%D0%B9+%D0%AD%D1
%80%D1%8B+%F0%9F%86%95&0%5B2%5D%5B0%5D%5Bcallback_data%5D=new_era_drinks&reply_markup=%7B
%22inline_keyboard%22%3A%5B%5B%7B%22text%22%3A%22%5Cu041d%5Cu0435%5Cu0437%5Cu0430%5Cu0431
% in /home/db_name/public_html/example.ru/functions.php on line 12

也就是说,webhook 抱怨这条线 -file_get_contents($url)

究竟可能是什么错误以及如何纠正?这是单击按钮时未显示另一条机器人消息的原因吗?

php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-08-02 05:45:40 +0000 UTC

如何从数组中获取元素[关闭]

  • 0
关闭 这个问题是题外话。目前不接受回复。

该问题是由不再复制的问题或错字引起的。虽然类似问题可能与本网站相关,但该问题的解决方案不太可能帮助未来的访问者。通常可以通过在发布问题之前编写和研究一个最小程序来重现问题来避免此类问题。

1 年前关闭。

改进问题

有两个文件 - 一个有一个包含问题的数组,另一个文件应该显示所需的问题。在机器人中,用户点击按钮中的问题,机器人本身应该在单独的聊天中显示这些问题

实际上这里是文件中的代码有问题

$asking_questions = [

'contact_HowToDownload_v1' => [
    'asking_text' => 'Как загружать с аккаунтов?'
],

'contact_IsNotDownloading_v1' => [
    'asking_text' => 'Не загружаются медиа'
],

'contact_HowMuchIsLoaded_v1' => [
    'asking_text' => 'Сколько загружаются видео?'
] ]

这是来自可执行文件

if ($prefix === 'contact') { // прислать сообщение в группу
        if ($asking_questions[$callback_data]) {
            $asking = $asking_questions[$callback_data];
            $post = [
                'chat_id' => GROUP_ID,
                'text' => '👨‍💻 Пользователь ' . '<a href="tg://user?id=' . $user_id . '">id' . $user_id . '</a>' . ' обратился с вопросом: ' . $asking_questions['asking_text'],
                'parse_mode' => 'html'
            ];
            telegram('sendMessage', $post);
        } }

聊天机器人只显示一条消息,而不显示问题本身: 机器人不显示问题

php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-07-27 00:58:18 +0000 UTC

如何通过机器人向群组发送消息?

  • -1

我写了一个机器人,当按下按钮时,应该向一个开放的组发送一条消息,以及发送的代码(重要:你需要发送一条新消息,而不是从与机器人)

if ($answers[$callback_data]) {
    $answer = $answers[$callback_data];
    $post = [
        'chat_id' => $user_id,
        'message_id' => $message_id,
        'text' => $answer["answer_text"],
        'parse_mode' => 'html',
    ];
if ($answer["support_available"]) {
            $buttons = array_merge($buttons, [['text' => 'Начать диалог', 'callback_data' => 'contact_' . $callback_data]]);
        }

} else {
    $explode_data = explode('_', $callback_data, 2);
    $prefix = $explode_data[0];

    } if ($prefix === 'contact') { // прислать сообщение в группу
        // $send_answers = $explode_data[1];
        $post = [
            'chat_id' => GROUP_ID,
            'text' => 'aaa'
        ];
        telegram('sendMessage', $post);

}

群里的bot是管理员,但是点击带有联系人前缀的按钮时仍然没有发送消息,也许我错过了一些重要的事情,但我仍然找不到确切的内容

php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-07-13 06:34:24 +0000 UTC

如何分隔电报机器人消息中的按钮?

  • 0

我不知道如何将消息下的按钮拆分为行和列,机器人只是显示一条带有一行按钮的消息(然后一行中超过 8 个按钮都适合)需要按钮 4 和 5 位于第 2 行

$inline_keyboard_questions_account = [[['text' => '№1', 'callback_data' => 'question 1'], ['text' => '№2', 'callback_data' => 'question 2'], ['text' => '№3', 'callback_data' => 'question 3'], ['text' => '№4', 'callback_data' => 'question 4'], ['text' => '№5', 'callback_data' => 'question 5']]],
            'reply_markup' => inline_keyboard($inline_keyboard_questions_account)

需要按钮 4 和 5 位于第 2 行

php
  • 1 个回答
  • 10 Views
Martin Hope
Eugene
Asked: 2022-07-12 04:08:07 +0000 UTC

单击按钮后如何显示消息?

  • 0

我正在尝试退出callback_data,但机器人不显示任何内容,只是发送完全相同的消息

$inline_keyboard_themes = [[['text' => 'Тема 1', 'callback_data' => "Ответ 1"], ['text' => 'Тема 2', 'callback_data' => "Ответ 2"], ['text' => 'Тема 3', 'callback_data' => "Ответ 3"]]];

$post = [
    'chat_id' => $user_id,
    'text' => 'Выберите основную тему, по которой у вас возник вопрос:',
    'reply_markup' => inline_keyboard($inline_keyboard_themes)
];

telegram('sendMessage', $post);

任何按钮按下都应返回响应,但会发送完全相同的消息。

图像

php
  • 1 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5