python-telegram-bot 相关问题

这是一个包含Telegram bot API的Python库。

AttributeError:模块“telegram.ext.filters”没有属性“text”

状态={ MOB_NO:[MessageHandler(filters.text,reply_to)], }, AttributeError:模块“telegram.ext.filters”没有属性“text” 我安装 pip install python-telegram-bot。 在这里我们导入 mod...

回答 3 投票 0

如何将消息发送到电报作为``code````

将 Prettytable 的输出发送到 Telegram 这个问题是先前问题的后续问题。我的代码是这样的: 导入电报 from Prettytable 导入 PrettyTable def send_msg(te...

回答 5 投票 0

是否可以不使用 python-telegram-bot 来使用更新?

我正在使用 python-telegram-bot 包开发一个小型电报机器人。 在调试时,我必须一次又一次地向机器人发送相同的测试消息。 即使我在调试暂停模式下停止程序...

回答 1 投票 0

Python Telegram 机器人不会回复其他机器人发送的消息

我正在用Python编写两个电报机器人。 第一个供私人聊天中的用户使用,他们通过键盘输入数据并附加视频。随后,机器人会发送一份由

回答 2 投票 0

如何将可收藏的电报用户名分配给机器人

我想知道有没有办法将可收集的 Telegram 用户名分配给机器人? - 实际上,我需要使用与 Telegram API 配合使用的机器人发送高级表情符号。 我该怎么做呢?

回答 1 投票 0

无法从另一个文件返回状态

我有一个文件 main.py ,其中包含以下代码: 菜单 = 范围(0) 主类(): def __init__(自身): self.app = Application.builder().token(token=config['TOKEN']).build() self.start_ha...

回答 1 投票 0

无法切换到不同的线程

我正在尝试创建一个可以发送网页屏幕截图的电报机器人。 我使用 python-telegram-bot 来处理电报交互,并使用 python-playwright 来获取页面的屏幕截图。该...

回答 1 投票 0

Python Telegram Bot 中的解析模式

我希望在单击 context.user_data["code"] 时发送此消息后自动复制它,所以我使用了 `` 和 parse_mode="MarkdownV2" 等待 context.bot.send_mess...

回答 1 投票 0

第二次通过 Telegram 机器人输入数据时出错

创建电报机器人时出错,输入姓名/电子邮件/电话时,我要求他再次执行此操作,然后他给我以下错误消息: 创建电报机器人时出错,输入姓名/电子邮件/电话时,我要求他再次执行此操作,然后他给我以下错误消息: <HttpError 400 when requesting https://sheets.googleapis.com/v4 /spreadsheets/1saG- dfVZEUmu_dLoOjm85XEc0xyMIQMLUWslXTVjrQc/values/DadosTelegram%21A5%3AD5?valueInputOption=USER_ENTERED&alt=json returned "Requested writing within range [DadosTelegram!A5:D5], but tried writing to column [E]". Details: "Requested writing within range [DadosTelegram!A5:D5], but tried writing to column [E]"> 我在通过Python运行电报机器人时尝试第二次插入数据,它插入了第一个数据,但是在第二次尝试插入数据时,它给出了错误。 import os.path import datetime import telebot import requests import io from PIL import Image from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery, InputMediaPhoto from functools import partial from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError CHAVE_API = "secret" bot = telebot.TeleBot("secret") #mensagem de continuidade do bot message_continius = "Você está no controle! Se quiser experimentar outras opções ou precisar de mais informações, estou à disposição:" SCOPES = ['https://www.googleapis.com/auth/spreadsheets'] SAMPLE_SPREADSHEET_ID = 'secret' SAMPLE_RANGE_NAME = 'DadosTelegram!A1:D10' def main(): global user_data user_data = {} bot.polling() def save_to_google_sheets(user_data): creds = None if os.path.exists('token.json'): creds = Credentials.from_authorized_user_file('token.json', SCOPES) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'client_secret.json', SCOPES ) creds = flow.run_local_server(port=0) with open('token.json', 'w') as token: token.write(creds.to_json()) try: service = build('sheets', 'v4', credentials=creds) # Determine the next empty row in the first column result = service.spreadsheets().values().get( spreadsheetId=SAMPLE_SPREADSHEET_ID, range="DadosTelegram!A:A" # Check the entire column A ).execute() values = result.get('values', []) next_empty_row = len(values) + 1 range_name = f"DadosTelegram!A{next_empty_row}:D{next_empty_row}" # Assume you have 4 columns of data user_data_values = user_data + [datetime.date.today().strftime('%d/%m/%Y')] values_update = [ user_data_values, ] # Update the range name based on the next empty row range_name = f"DadosTelegram!A{next_empty_row}:D{next_empty_row}" result = service.spreadsheets().values().update( spreadsheetId=SAMPLE_SPREADSHEET_ID, range=range_name, valueInputOption="USER_ENTERED", body={'values': values_update} ).execute() except HttpError as err: print(err) @bot.message_handler(func=lambda message: True) def send_welcome(message): user_data[message.chat.id] = [] response = requests.get("https://media.discordapp.net/attachments/1046247245303001109/1228049740508168284/ConsisteLogo.png?ex=662aa172&is=66182c72&hm=bc9562674b28a5a3255d6290507b60cda73976a9d478f4d194b73cb86914ed50&=&format=webp&quality=lossless") img = Image.open(io.BytesIO(response.content)) img.save("temp.webp", "webp") with open("temp.webp", "rb") as f: bot.send_sticker(message.chat.id, f) os.remove("temp.webp") send_keyboard(message, "Olá, Seja bem vindo a Consiste! Escolha uma opção para continuar:") def send_keyboard(message, message_text): keyboard = InlineKeyboardMarkup() button1 = InlineKeyboardButton("Saber Mais Sobre a Consiste", callback_data="opcao1") button2 = InlineKeyboardButton("Quero Entrar em Contato com a Consiste", callback_data="opcao2") button3 = InlineKeyboardButton("Quero que a Consiste entre em contato comigo", callback_data="opcao3") button4 = InlineKeyboardButton("Finalizar Atendimento", callback_data="finalizar") keyboard.row(button1) keyboard.row(button2) keyboard.row(button3) keyboard.row(button4) bot.send_message(message.chat.id, message_text, reply_markup=keyboard) @bot.callback_query_handler(func=lambda call: True) def callback_inline(call): if call.data == "opcao1": bot.send_photo(call.message.chat.id,"https://media.licdn.com/dms/image/C4E03AQG7G7Gl7htZbQ/profile-displayphoto-shrink_200_200/0/1517610064166?e=1718236800&v=beta&t=DFmyD5O8UI4KusfYf9jxx-ZfjZ51rnFQ3tnQaqZrvdg") bot.send_message(call.message.chat.id, "Esté é Marcos Vinicius Fonseca, nosso Presidente") bot.send_message(call.message.chat.id,"""CONSISTE: Servindo ao Sucesso Na CONSISTE, nossa missão é clara: impulsionar o sucesso dos nossos clientes. Combinamos paixão por tecnologia e comprometimento com resultados para oferecer soluções inovadoras. Nossa equipe, composta por profissionais íntegros e criativos, trabalha em um ambiente de confiança e colaboração, onde o cliente é prioridade absoluta. O XTR, nossa solução, é flexível e adaptável a diversas áreas. Desde a coleta de dados até o relacionamento com clientes, promove uma gestão eficiente e focada em resultados tangíveis. Venha conhecer a CONSISTE e descubra como podemos ajudar a impulsionar o seu sucesso empresarial, na CONSISTE, servir é nossa paixão e seu sucesso, nossa prioridade. para saber mais acesse: https://www.consiste.com.br/portal.nsf/index.xsp""") send_keyboard(call.message, message_continius) elif call.data == "opcao2": bot.send_message(call.message.chat.id, """ Você pode entrar em contato com a Consiste das seguintes formas: Fone: (71) 2102-6969 E-mail: [email protected] Para saber mais você também pode entrar em nosso Site: https://www.consiste.com.br/portal.nsf/index.xsp""") send_keyboard(call.message, message_continius) #Pedindo Nome elif call.data == "opcao3": bot.send_message(call.message.chat.id, "Você Escolheu: Quero que a Consiste entre em contato comigo") bot.send_message(call.message.chat.id, "Por favor, digite seu Nome:") bot.register_next_step_handler(call.message, partial(get_email, user_id=call.message.chat.id)) #Finalizando Conversa elif call.data == "finalizar": bot.send_message(call.message.chat.id, "Atendimento finalizado, a Consiste agradeçe!") bot.clear_step_handler(call.message) def get_email(message, user_id): user_data[user_id].append(message.text) bot.send_message(message.chat.id, "Por favor, nos informe seu E-mail:") bot.register_next_step_handler(message, partial(get_telefone, user_id=user_id)) def get_telefone(message, user_id): user_data[user_id].append(message.text) bot.send_message(message.chat.id, "Por favor, nos informe seu Telefone:") bot.register_next_step_handler(message, partial(get_phone, user_id=user_id)) def get_phone(message, user_id): phone = message.text if len(phone) < 12 and not phone.startswith('+'): phone = "+55" + phone user_data[user_id].append(phone) bot.send_message(message.chat.id, "Obrigado pela colaboração, entraremos em contato em breve!") send_keyboard(message, message_continius) save_to_google_sheets(user_data[user_id]) if __name__ == "__main__": main() 从您显示的Requested writing within range [DadosTelegram!A5:D5], but tried writing to column [E]错误消息来看,我猜测在这种情况下,values_update的值的长度可能是5。在您的脚本中,从range_name = f"DadosTelegram!A{next_empty_row}:D{next_empty_row}"开始,使用了“A”到“D”列。在这种情况下,当值的长度超过5时,就会出现这样的错误。如果你想把两个值都放进去而不报错,下面的修改怎么样? 来自: range_name = f"DadosTelegram!A{next_empty_row}:D{next_empty_row}" 致: range_name = f"DadosTelegram!A{next_empty_row}" 通过此修改,值将被放入使用第一个单元格范围“A”的单元格中。 例如,当values_update为["a", "b", "c", "d"]时,这些值将被放入“A”至“D”列中。并且,当 values_update 为 ["a", "b", "c", "d", "e"] 时,这些值将放入“A”至“E”列中。

回答 1 投票 0

thread.join() 阻塞异步函数

我正在使用 python-telegram-bot 开发一个电报机器人。它就像一个股票筛选器,它会在每个给定的时间间隔分析市场并将结果发送给订阅该指标的用户......

回答 1 投票 0

检查用户是否为频道成员

我使用 python-telegram-bot 并使用 get_chat_member 方法。我的代码是: user_id = update. effective_chat.id 打印(用户 ID) 频道用户名 =“@Numbew” 等待 context.bot.get_chat_member(

回答 1 投票 0

AIOGRAM 3:如何在断网后恢复机器人

我的 Aiogram3 机器人出现问题。互联网消失后,我的机器人停止工作。通常,当互联网出现时,机器人就无法工作。我编写了一个脚本,应确保 b...

回答 1 投票 0

python telegram bot - 如何查看我的机器人在公共频道中是否是管理员? -

我想通过频道 ID 检查我的机器人是否是频道中的管理员。 对于更多故事,我从转发的频道消息中获取频道 ID。我想检查机器人是否在频道中并且是管理员。

回答 2 投票 0

使用 python-telegram-bot 时出现错误

我遇到一个小问题。 初始化我的树莓派 pi4(书虫)后,以前运行的程序停止运行并给出错误。我怎样才能解决这个问题? 这是代码。 导入日志记录 小鬼...

回答 1 投票 0

发送照片后机器人没有反应

当我想从电报发送文件到机器人时,我没有得到任何响应,另外在docker中我没有任何日志。 从电报导入更新 从 telegram.ext 导入 CallbackContext 从 。 ...

回答 1 投票 0

Telegram 管理员机器人和 Telegram 用户机器人之间的聊天代码不起作用

我开发了一个 Telegram 机器人“迷你应用程序”,允许用户访问网站并通过输入文本来解释他们的问题来打开“票证”。接下来是一条消息“管理员

回答 1 投票 0

使用电报机器人(python-telegram-bot)下载文件(规格图像)

目标:我正在尝试设置一个电报机器人,它会下载发送给它的图片。 在手动处理请求后,我宁愿使用 python-telegram-bot 库。然而

回答 1 投票 0

新电报私人频道成员/订阅者的通知

有没有办法建立一个通知系统,通过消息/电子邮件/任何其他方法向您发送加入您自己的私人电报频道的每个新成员/订阅者的用户名。 有

回答 1 投票 0

我遇到了 telegram.ext.filters 没有属性“文本”的问题

我正在开发 python-telegram-bot v13.7 并且模块 telegram.ext.filters 没有属性“text” 这是代码: 导入日志记录 从 telegram.ext 导入更新程序、CommandHandl...

回答 1 投票 0

Telegram Bot - 如何获取用户 ID

我正在寻求开发一个类似于@rawdatabot的机器人,它在与其共享时提供用户ID。 实施例1 实施例2 但是,我不确定这样的机器人如何检索有关您的用户的信息

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.