python-telegram-bot 相关问题

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

如何使用本地电报机器人API获取机器人令牌?

我使用 botfather 创建了一个电报机器人。我在 python 代码中使用了生成的机器人令牌。我还使用 python-telegram-bot 包来处理我的代码。 问题是文件大小限制,因为...

回答 1 投票 0

是否可以将我的机器人置于睡眠模式然后将其唤醒?

早上好。我正在尝试编写一个 Telegram 机器人来帮助我在 Telegram 上发送格式化的帖子。我对代码没有任何具体问题,相反我很好奇:基于它是如何的

回答 1 投票 0

使用 Telegram API - Telegraf - 通过尝试接受用户的加入请求并使用 PromotionChatMember() 错误:错误请求:机器人无法添加新的聊天成员

所以我的电报机器人位于这个超级组(私人组)中,用户必须请求加入,管理员必须接受他们的请求。 网上搜索,我看到的唯一解决方案是使用promoteChatMemb...

回答 1 投票 0

如何使用 telegram.ext 中的 MessageHandler 正确过滤消息

我正在使用 Python3 和 telegram-python-bot v.21.0.1 库使用 telegram 和 telegram.ext 模块来创建我的机器人。 现在我面临着创建自定义过滤器来过滤来自管理员的消息的问题...

回答 1 投票 0

如何通过电报机器人发送 PIL 图像而不将其保存到文件

对于我的电报机器人(python-telegram-bot),我生成了一个 PIL.Image.Image,我想将其直接发送给用户。 有效的方法是从文件中将图像作为 bufferedReader 发送,但我不想...

回答 3 投票 0

电报机器人,对按钮点击的响应不发送

我正在制作一个电报机器人公式助手。存在一个问题,当您按下“力学”按钮时,机器人会做出响应,但是当您按下“电磁现象”时......

回答 1 投票 0

Telegramm Bot 不满意

我正在制作一个电报机器人公式助手。存在一个问题,当您按下“力学”按钮时,机器人会做出响应,但是当您按下“电磁现象”时......

回答 1 投票 0

如何从 python-telegram-bot (PTB) 中的另一个线程运行异步函数

我们知道 python-telegram-bot 使用 asyncio。但一切都发生在主线程内。 在这种情况下,我需要在另一个线程内运行异步函数。 这样做的主要目的是因为...

回答 1 投票 0

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

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