Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Я попросил у ии написать код на питон для пайшарм для тг бота для библиотеки телебот, но получается ошибка

vv dvd5o Знаток (383), на голосовании 4 дня назад
Я попросил у ии написать код на питон для пайшарм для тг бота для библиотеки телебот, но получается ошибка

В чём ошибка?

Код для оплаты через криптобот

 TELEGRAM_BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN' 
CRYPTOBOT_TOKEN = 'YOUR_CRYPTOBOT_TOKEN'

bot = telebot.TeleBot(TELEGRAM_BOT_TOKEN)

@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Я бот, который принимает платежи через CryptoBot. Нажмите /pay, чтобы начать.")

@bot.message_handler(commands=['pay'])
def create_payment(message):
chat_id = message.chat.id
amount = 0.001 # Укажите сумму в BTC или другой поддерживаемой валюте

# Создание платежа через CryptoBot
payment_url = create_cryptobot_payment(amount)

if payment_url:
markup = types.InlineKeyboardMarkup()
pay_button = types.InlineKeyboardButton("Оплатить", url=payment_url)
markup.add(pay_button)
bot.send_message(chat_id, "Нажмите кнопку ниже, чтобы оплатить:", reply_markup=markup)
else:
bot.send_message(chat_id, "Произошла ошибка при создании платежа. Попробуйте позже.")

def create_cryptobot_payment(amount):
url = f'https://api.cryptobot.com/v1/createInvoice'
headers = {
'Authorization': f'Bearer {CRYPTOBOT_TOKEN}',
'Content-Type': 'application/json'
}
data = {
'amount': amount,
'currency': 'BTC', # Укажите нужную валюту
'description': 'Оплата за услугу'
}
response = requests.post(url, json=data, headers=headers)

if response.status_code == 200:
payment_data = response.json()
return payment_data.get('pay_url')
else:
print("Ошибка при создании платежа:", response.text)
return None

bot.polling()
Ошибка выводится на стадии, когда отправляю команду /pay
Голосование за лучший ответ
1 литр энеоавлдввлталчлвлы Гуру (4606) 1 месяц назад
 import telebot 
import requests
from telebot import types

TELEGRAM_BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
CRYPTOBOT_TOKEN = 'YOUR_CRYPTOBOT_TOKEN'

bot = telebot.TeleBot(TELEGRAM_BOT_TOKEN)

@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.reply_to(message, "Привет! Я бот, который принимает платежи через CryptoBot. Нажмите /pay, чтобы начать.")

@bot.message_handler(commands=['pay'])
def create_payment(message):
chat_id = message.chat.id
amount = 0.001 # Укажите сумму в BTC или другой поддерживаемой валюте

# Создание платежа через CryptoBot
payment_url = create_cryptobot_payment(amount)

if payment_url:
markup = types.InlineKeyboardMarkup()
pay_button = types.InlineKeyboardButton("Оплатить", url=payment_url)
markup.add(pay_button)
bot.send_message(chat_id, "Нажмите кнопку ниже, чтобы оплатить:", reply_markup=markup)
else:
bot.send_message(chat_id, "Произошла ошибка при создании платежа. Попробуйте позже.")

def create_cryptobot_payment(amount):
url = 'https://api.cryptobot.com/v1/createInvoice'
headers = {
'Authorization': f'Bearer {CRYPTOBOT_TOKEN}',
'Content-Type': 'application/json'
}
data = {
'amount': amount,
'currency': 'BTC', # Укажите нужную валюту
'description': 'Оплата за услугу'
}

try:
response = requests.post(url, json=data, headers=headers)
response.raise_for_status() # Это выбросит исключение для плохих ответов (4xx, 5xx)
payment_data = response.json()
return payment_data.get('pay_url')
except requests.exceptions.RequestException as e:
print("Ошибка при создании платежа:", e)
return None

bot.polling()
Что было изменено:

1. Добавлен импорт requests и types из telebot, если он не был импортирован ранее.
2. Добавлена обработка исключений при выполнении запроса к API. Это поможет вам понять, какая именно ошибка произошла при создании платежа через CryptoBot.
3. Убедитесь, что вы заменили YOUR_TELEGRAM_BOT_TOKEN и YOUR_CRYPTOBOT_TOKEN на реальные токены бота.
vv dvd5oЗнаток (383) 1 месяц назад
вот что выводит бот (3ий пункт верный)
Произошла ошибка при создании платежа. Попробуйте позже.
S.H.I. Оракул (73212) 1 месяц назад
Отсутствуют необходимые импорты библиотек:
 import telebot 
from telebot import types
import requests

Неправильный URL API CryptoBot:
 url = f'https://api.cryptobot.com/v1/createInvoice' 
Должен быть:
 url = 'https://pay.crypt.bot/api/createInvoice' 

Неверный формат заголовка авторизации:
 headers = {  
'Authorization': f'Bearer {CRYPTOBOT_TOKEN}',
'Content-Type': 'application/json'
}
Должен быть:
 headers = {  
'Crypto-Pay-API-Token': CRYPTOBOT_TOKEN,
'Content-Type': 'application/json'
}

Неправильное название параметра валюты (должно быть 'asset' вместо 'currency') и формат суммы:
 data = {  
'asset': 'BTC',
'amount': str(amount),
'description': 'Оплата за услугу'
}
vv dvd5oЗнаток (383) 1 месяц назад
1ое есть
Вроде всё изменил
Произошла ошибка при создании платежа. Попробуйте позже.
S.H.I. Оракул (73212) vv dvd5o, в каком окружении вы запускаете данный скрипт (локально, на сервере, в Pyodide и т.п.)?
vv dvd5oЗнаток (383) 1 месяц назад
Помогите, пожалуйста
https://otvet.mail.ru/question/242037122
Похожие вопросы