RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

全部问题

Martin Hope
An9r3z1k
Asked: 2025-01-08 23:41:45 +0000 UTC

类型错误:“str”对象不可调用

  • 6

我正在为 Telegram 频道制作一个机器人,它给了我错误:

类型错误:“str”对象不可调用

这是代码:

import telebot
from telebot import types
import random


bot = telebot.TeleBot('токен')
bal = 2
farm = random.randint(1, 5)
chisel = random.randint(1, 10)
# ans = ''.format(''.join(answers))


@bot.message_handler(commands=['start', 'restart'])
def start(m):
    bot.send_message(m.chat.id, f'Привет {m.from_user.first_name}, меня зовут Лёша.\nНапиши /gl чтобы начать')


@bot.message_handler(commands=['gl'])
def gl(m):
    mk = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton('Помощь')
    mk.add(btn1)
    bot.send_message(m.chat.id, 'Выбери одну из игр\n'
                                'Угадай число /gtc\n'
                                'Угадай слово /gtw\n'
                                'Угадай игру /gtg\n'
                                'Крестики-нолики /xo', reply_markup=mk)
    if m.text == 'Помощь':
        bot.send_message(m.chat.id, 'Напишите /help')


@bot.message_handler(commands=['gtc'])
def gtc(m):
    mk = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton('↩Назад')
    btn2 = types.KeyboardButton('Готово')
    mk.add(btn1, btn2)
    answers = []
    answer = m.text
    answers.append(answer)
    mss = bot.send_message(m.chat.id, 'Напиши ставку: (Мин. ставка 2)', reply_markup=mk)
    bot.register_next_step_handler(mss, answer)
    if m.text == 'Готово':
        mk = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton('↩Назад')
        btn2 = types.KeyboardButton('Готово')
        mk.add(btn1, btn2)
        answer1 = m.text
        answers.append(answer1)
        mss = bot.send_message(m.chat.id, 'Напиши любое число: (1-10)', reply_markup=mk)
        bot.register_next_step_handler(mss, answer1)
        if m.text == 'Готово':
            mk = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1 = types.KeyboardButton('На главную')
            mk.add(btn1)
            if random == answer1:
                bot.send_message(m.chat.id, f'🎉Вы выйграли{answer * 2}\nВаш баланс{answer * 2 + bal}', reply_markup=mk)
            elif random < answer1 and random > answer1:
                bot.send_message(m.chat.id, f'Увы вы проигарли{answer}\nВаш баланс{answer - bal}')
        elif m.text == 'На главную':
            mk = types.ReplyKeyboardMarkup(resize_keyboard=True)
            btn1 = types.KeyboardButton('Помощь')
            mk.add(btn1)
            bot.send_message(m.chat.id, 'Выбери одну из игр\n'
                                        'Угадай число /gtc\n'
                                        'Угадай слово /gtw\n'
                                        'Угадай игру /gtg\n'
                                        'Крестики-нолики /xo', reply_markup=mk)
            if m.text == 'Помощь':
                bot.send_message(m.chat.id, 'Напишите /help')
    elif m.text == '↩Назад':
        mk = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton('Помощь')
        mk.add(btn1)
        bot.send_message(m.chat.id, 'Выбери одну из игр\n'
                                    'Угадай число /gtc\n'
                                    'Угадай слово /gtw\n'
                                    'Угадай игру /gtg\n'
                                    'Крестики-нолики /xo', reply_markup=mk)
        if m.text == 'Помощь':
            bot.send_message(m.chat.id, 'Напишите /help')
        else:
            bot.send_message(m.chat.id, "Увы я не знаю такой команды")


@bot.message_handler(commands=['help'])
def help(m):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton('🎲Кубик')
    btn2 = types.KeyboardButton('🎰Угадай число')
    markup.add(btn1, btn2)
    bot.send_message(m.chat.id, 'Выбери игру про которую хотите прочитать правила', reply_markup=markup)


@bot.message_handler(commands=['farm'])
def farm(m):
    bot.send_message(m.chat.id, f'Вы получили {farm} коин(-а, -ов)\nВаш баланс {farm + bal}')


bot.infinity_polling()

完整错误:

2025-01-08 19:34:57,609 (__init__.py:1115 MainThread) ERROR - TeleBot: "Infinity polling exception: 'str' object is not callable"
2025-01-08 19:34:57,616 (__init__.py:1117 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\telebot\__init__.py", line 1110, in infinity_polling
    self.polling(non_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\telebot\__init__.py", line 1198, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\telebot\__init__.py", line 1273, in __threaded_polling
    raise e
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\telebot\__init__.py", line 1235, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\telebot\util.py", line 150, in raise_exceptions
    raise self.exception_info
  File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\telebot\util.py", line 93, in run
    task(*args, **kwargs)
TypeError: 'str' object is not callable"
python
  • 1 个回答
  • 37 Views
Martin Hope
Plush
Asked: 2025-01-08 20:33:33 +0000 UTC

通过参数之一的值访问 DOM 元素

  • 5

有一个函数可以通过 DOM 元素来访问它们id=

function getByID(i){
    return document.getElementById(i);
}

条件满足

# shareURL имеет вид "https://example.com/video/4895738"

var shareURL=uiData.shareURL;
if(shareURL!=null){
    getByID("itemURL").value=shareURL;
}

因此,我们可以将值替换为

<input id="itemURL" type="text" value="" />

并且有一个meta标签,您需要在其中动态更改每个页面的URI,但meta标签不支持该属性id=

<meta property="og:url" content="" />

content=""如何将动态值(文档链接、变量shareURL)替换为参数的元标记?

显然你需要联系property="og:url"来替换该值shareURL,content=""但我不明白哪个函数。

谢谢。

javascript
  • 1 个回答
  • 31 Views
Martin Hope
Серый Биф
Asked: 2025-01-08 19:41:28 +0000 UTC

使用 Windows 11 从服务器下载应用程序版本时,HttpClient 无法正常工作

  • 6

该任务的本质是使用带有动态更新的 ProgressBar 和 Label 的表单从 Internet 服务器下载应用程序安装程序文件,该 Label 指示已下载的 MB 数以及HttpClient类,以获得对 Internet 服务器的直接访问。另外,如果互联网连接中断,请等待 60 秒才能重新连接。如果互联网丢失 >= 60 秒 - 关闭表单并中断下载。

在 Windows 10 上,该功能工作正常,但在 Windows 11 上,当 Internet 连接中断时,即断开连接时,就会出现问题 - 表单停止处理交互事件(单击按钮等)(当 GUI 正常工作时)。在某些版本的 Windows 上(Windows 11 版本 23h2) - 整个应用程序关闭(从应用程序调用下载表单)。

.NET框架4.8

StartDownload - 下载开始时调用的方法。

private async void StartDownload(string path = "")
{
    if (_cts != null) return;

    _lastSelectedPath = string.IsNullOrEmpty(path) ? SelectFolder() : path;

    if (_lastSelectedPath == null || !CanWriteToFolder(_lastSelectedPath))
    {
        MessageBox.Show(Properties.Resources.AccessViolation);
        Close();
        return;
    }

    FilePath = Path.Combine(_lastSelectedPath, _fileName);
    string url = _plugin.IsTestMode
        ? $"Сервер №1"
        : $"Сервер №2";

    bool isDownloadSuccessful = false;
    using (_cts = new CancellationTokenSource())
    {
        try
        {
            var progress = new Progress<DownloadProgress>(UpdateProgress);
            do
            {
                try
                {
                    await DownloadAndSaveFileAsync(url, FilePath, progress, _cts.Token); // Метод будет описан ниже
                    isDownloadSuccessful = true;
                    break; // Успешная загрузка, выходим из цикла
                }
                catch (IOException ex) // потеря доступа к интернету
                {
                    lbProgress.Text = Properties.Resources.ConnectWithServerLost; // lbProgress - Label на форме отображающий состояние скачивания
                    await WaitForReconnectAsync(_cts.Token); // Запуск 60 секунд для восстановления интернета
                }
                catch (HttpRequestException ex)
                {
                    if (ex.Message.Contains("416")) // 416 (Запрошенный диапазон невыполним = Файл уже полностью загружен)
                    {
                        MessageBox.Show(Properties.Resources.FileAlreadyUploaded);
                        DialogResult = DialogResult.OK;
                        break;
                    }
                    else break; // выходим из цикла, если были другие ошибки типа HttpRequestException
                }
                catch (OperationCanceledException) // Отмена пользователем с помощью кнопки "Cancel" или закрытия формы
                {
                    DialogResult = DialogResult.Cancel;
                    break;
                }
                catch (Exception msg)
                {
                    break;
                }
            }
            while (!_connectionEstablishmentFailed); // Повторяем, пока не исчерпан лимит времени

            
            if (!_connectionEstablishmentFailed && DialogResult != DialogResult.Cancel) isDownloadSuccessful = true;
            else // Соединение не восстановилось
            {
                DialogResult = DialogResult.Cancel;
            }
        }

        finally
        {
            if (isDownloadSuccessful) DialogResult = DialogResult.OK;
            progress.Value = 0;
            Close();
        }
    }
    _cts = null; // Обязательно сбрасываем, чтобы избежать ObjectDisposedException
}

DownloadAndSaveFileAsync - 在 StartDownload 执行期间调用以开始下载文件

private async Task DownloadAndSaveFileAsync(string url, string filePath, IProgress<DownloadProgress> progress, CancellationToken token)
{
    const int bufferLength = 8192;
    long downloadedBytes = File.Exists(filePath) ? new FileInfo(filePath).Length : 0;

    using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url))
    {
        if (downloadedBytes > 0) request.Headers.Range = new RangeHeaderValue(downloadedBytes, null);

        using (HttpResponseMessage response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, token).ConfigureAwait(false))
        {
            response.EnsureSuccessStatusCode();

            using (Stream contentStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
            using (FileStream fs = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.None))
            {
                long totalBytes = downloadedBytes + response.Content.Headers.ContentLength ?? 0;
                byte[] buffer = new byte[bufferLength];
                int bytesReceived;

                while ((bytesReceived = await contentStream.ReadAsync(buffer, 0, buffer.Length, token).ConfigureAwait(false)) > 0)
                {
                    await fs.WriteAsync(buffer, 0, bytesReceived, token).ConfigureAwait(false);
                    downloadedBytes += bytesReceived;
                    progress?.Report(new DownloadProgress
                    {
                        BytesDownloaded = downloadedBytes,
                        TotalBytes = totalBytes
                    });
                }
            }
        }
    }
}

WaitForReconnectAsync - 启动等待 60 秒以恢复 Internet 连接的过程的方法

private async Task WaitForReconnectAsync(CancellationToken token)
{
    int elapsedTime = 0;
    while (elapsedTime < maxWaitTime)
    {
        token.ThrowIfCancellationRequested();
        if (PingServer("4.2.2.4"))
        {
            _connectionEstablishmentFailed = false; // Сбрасываем флаг при успешном восстановлении сети Интернет
            return;
        }
        await Task.Delay(checkInterval, token);
        lbProgress.Text = Properties.Resources.ConnectWithServerLost + $" {elapsedTime / 1000} sec.";
        elapsedTime += checkInterval;
    }
    _connectionEstablishmentFailed = true; // Соединение не восстановлено в течении maxWaitTime
}

PingServer - 向指定地址发送请求的方法

private bool PingServer(string host)
{
    try
    {
        using (var ping = new Ping())
        {
            var reply = ping.Send(host, 1000);
            return reply.Status == IPStatus.Success;
        }
    }
    catch { return false; }
}
c#
  • 1 个回答
  • 30 Views
Martin Hope
Daria
Asked: 2025-01-08 19:28:11 +0000 UTC

如何使用 render_card 函数将页面上数组中的所有卡片显示到元素中?

  • 6

页面连接了一个initialCards卡片数组,布局中准备了一个模板#card-template用于展示卡片。

const initialCards = [
    {
      name: "Архыз",
      link: "https://pictures.s3.yandex.net/frontend-developer/cards-compressed/arkhyz.jpg",
    },
    {
      name: "Челябинская область",
      link: "https://pictures.s3.yandex.net/frontend-developer/cards-compressed/chelyabinsk-oblast.jpg",
    },
    {
      name: "Иваново",
      link: "https://pictures.s3.yandex.net/frontend-developer/cards-compressed/ivanovo.jpg",
    },
    {
      name: "Камчатка",
      link: "https://pictures.s3.yandex.net/frontend-developer/cards-compressed/kamchatka.jpg",
    },
    {
      name: "Холмогорский район",
      link: "https://pictures.s3.yandex.net/frontend-developer/cards-compressed/kholmogorsky-rayon.jpg",
    },
    {
      name: "Байкал",
      link: "https://pictures.s3.yandex.net/frontend-developer/cards-compressed/baikal.jpg",
    }
];
<!-- TEMPLATE -->
    <template id="card-template">
      <li class="places__item card">
        <img class="card__image" src="" alt="" />
        <button type="button" class="card__delete-button"></button>
        <div class="card__description">
          <h2 class="card__title"></h2>
          <button type="button" class="card__like-button"></button>
        </div>
      </li>
    </template>

我需要使用结果函数将页面上数组中的所有卡片显示到一个元素中.places__list

// Объявили переменную, куда выведем готовые карточки
const placesList = document.querySelector(".places__list");

function renderCard({ name, link }) {
  // Скопировали шаблон

  const cardTemplate = document.querySelector("#card-template").content;
  const cardElement = cardTemplate
    .querySelector(".places__item")
    .cloneNode(true);

  // Установили значения вложенных элементов
  cardElement.querySelector(".card__title").textContent = name;
  cardElement.querySelector(".card__image").src = link;
  cardElement.setAttribute("alt", name);

  // Обработчик клика, по которому будет вызван переданный в аргументах колбэк (функция).
  const deleteButton = cardElement.querySelector(".card__delete-button");
  deleteButton.addEventListener("click", deleteCard);
}

// Функция удаления
function deleteCard() {
  const cards = this.parentElement;
  cards.remove();
}


initialCards.forEach(renderCard, deleteCard);
placesList.append(cardElement);
<!-- СЕКЦИЯ С КАРТОЧКАМИ -->
        <section class="places page__section">
          <ul class="places__list"></ul>
        </section>

据我了解,这需要placesList.append(cardElement)写在一个新函数或全局中

问题是cardElement它位于函数本地renderCard()

因此,控制台会抛出错误:

Uncaught ReferenceError: cardElement is not defined

针对以上情况,请专家帮忙解决以下问题:

  1. 该函数renderCard()应该以一张卡的数据和一个用于删除的回调函数作为参数(我这样做了),并返回准备输出的卡元素

我不明白如何实现这个

  1. 如何使用结果函数在元素中的页面上显示数组中的所有卡片.places__list.?

placesList.append(cardElement)添加到功能的选项renderCard()不起作用

javascript
  • 1 个回答
  • 33 Views
Martin Hope
denis0001-dev
Asked: 2025-01-08 18:47:41 +0000 UTC

尝试在 iPhone 模拟器上运行 Compose Multiplatform 项目时,iOS 目标设备列表为空

  • 5

我在做什么

我正在尝试运行在网站上创建的Compose Multiplatform测试项目:

选项

我尝试过什么

在舰队中打开

出现错误:

舰队

在 Android Studio 中打开

已经同步成功了。我查看启动配置并看到iosApp。

在 iOS 上运行您的应用程序

  1. 在单独的窗口中启动 Xcode 以完成初始设置。如果这是您第一次启动 Xcode,您可能还需要接受其许可条款并允许它执行一些必要的初始任务。
  2. 在 Android Studio 中,在运行配置列表中选择iosApp并单击Run。默认情况下,运行配置将启动 Xcode 中可用的模拟设备并在那里运行应用程序。如果列表中没有可用的 iOS 配置,请添加新的运行配置。

https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html#run-your-application

一切似乎都是正确的。但过了一会儿,出现了一个十字:

叉

我单击“运行”。他带我进入设置:

设置

  1. 在“执行目标”列表中,选择一个模拟设备,然后单击“确定”。

    正确配置

  2. 单击“运行”以在新的模拟设备上运行您的应用程序。

执行目标必须是iPhone 14 Pro Max。但由于某种原因该列表是空的:

空的

我假设上面引用的图片中显示的 macOS 设备安装了macOS Ventura/Sonoma。

执行任务gradle assemble并从 Xcode 运行

我还尝试执行gradle assemble然后将编译的[проект]/composeApp/build/bin/iosSimulatorArm64/ComposeApp.framework文件复制到[проект]/iosApp/iosApp.我打开 Xcode 并尝试编译:

Xcode

Undefined symbol: _OBJC_CLASS_$_UITextLoupeSession

同步后立即在Xcode中运行

我收到了与上面相同的错误。

问题

  • 如何让 iPhone 14 Pro Max 模拟器(我的 Xcode 最新支持的型号)出现在目标设备列表中?或者这样你就可以从 Xcode 进行编译?
  • 我应该通过OpenCore Legacy Patcher升级到 Ventura 吗?不幸的是,我的 MacBook 仅支持macOS Monterey。

特征

系统

所有规格均取自“关于本机”菜单。

特征 意义
系统 macOS 蒙特利 12.7.6
笔记本电脑 MacBook Air(13 英寸,2015 年初)
中央处理器 1.6 GHz 2 核 Intel Core i5 处理器
内存 4 GB 1600 MHz DDR3
图形 英特尔高清显卡 6000 1536 MB
内置内存 121.12GB

节目

程序 版本
Xcode 14.2 (14C18)
iOS 在模拟器中 16.2
安卓工作室 2024.2.1.11
ios
  • 1 个回答
  • 31 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