при запуске телеграмм бота на двух разных аккаунтах он отправляет все сообщения, только тому, кто 1 его запустил
Всем привет, делаю себе бота в тг для расчета стоимости услуг транспортной компании, и столкнулся с проблемой, что при нажатии на втором аккаунте на кнопку 'Назад' и 'Калькулятор' бот выполняет команду и отправляет результат на тот аккаунт, на котором я запустил его первее. Прочитал решение подобной проблемы, попробовал, но ничего. На пайтоне пишу второй день, изучал чисто для этого бота)
вот весь код
import telebot
from telebot import types
import webbrowser
import math
bot = telebot.TeleBot('0000000000:AAAA1aA1aa1a1AA1Aa_Aaa1AaAAaaAaaaa')
@bot.message_handler(commands=['start'])
def main(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Калькулятор?', callback_data='calc')
btn2 = types.InlineKeyboardButton('Курс?', callback_data='rate')
btn3 = types.InlineKeyboardButton('Оформить заказ?', callback_data='order')
btn4 = types.InlineKeyboardButton('Отзывы?', url='https://t.me/exposefeedback')
markup.row(btn1, btn2)
markup.add(btn3)
markup.add(btn4)
file = open('./photo.jpg', 'rb')
bot.send_photo(message.chat.id, file)
bot.send_message(message.chat.id, f'⚡️Привет, в этом боте от сервиса EXPOSE ORDER ты сможешь рассчитать стоимость товаров с китайских маркетплейсов, таких как:\n\n1. POIZON, 95;\n2. Taobao, Pinduoduo;\n\n?*Для оформления заказа обращаться в личные сообщения: @exposemngr*', reply_markup=markup, parse_mode="Markdown")
def calc(message):
prices = open('./prices.jpg', 'rb')
bot.send_photo(message.chat.id, prices)
bot.send_message(message.chat.id,
'*¥1649 (2-3 дня)*\n- быстрый способ доставки по Китаю (2-3 дня)\n- товар находится на складе POIZON;\n- товар прошел проверку на подлинность, имеет бирки и сертификат POIZON;\n\n*~¥1100 - НЕ ВЫКУПАЮ*\n- товар находится за пределами Китая;\n\n*¥1449 (5-6 дней)*\n- более долгая доставка по Китаю (5-6 дней)\n- как правило, товар находится не на складе POIZON, сперва он будет отправлен продавцом на склад POIZON для проверки на подлинность, после удачной проверки он отправляется далее;',
parse_mode="Markdown")
input = bot.reply_to(message, '*Введите цену в юанях ¥:*', parse_mode="Markdown")
bot.register_next_step_handler(input, get_price)
def get_price(message):
markupprice = types.InlineKeyboardMarkup()
btncalcomt = types.InlineKeyboardButton('Рассчитать еще?', callback_data='reset')
btncalcback = types.InlineKeyboardButton('Меню?', callback_data='back')
btncalcorder = types.InlineKeyboardButton('Оформить заказ?', callback_data='order2')
markupprice.row(btncalcomt, btncalcback)
markupprice.add(btncalcorder)
global price;
price = math.ceil(float(message.text) * 12.8 + 650.0)
priceusdt = math.ceil(float(price) / 90.0)
bot.send_message(message.chat.id,
f'*{price}₽ ({priceusdt} USDT)* - цена с учетом комиссии, страховки и доставки товара со склада POIZON до склада в КИТАЕ\n\n❗️Оплата доставки Китай - РФ производится ОТДЕЛЬНО после получения и взвешивания товара на складе в Китае:\n1. Авто - 1000₽/кг\n\nСрок доставки: 14 дней до Москвы\n\nСтоимость доставки по России входит в выбранный вами тариф (Авто)',
parse_mode="Markdown", reply_markup=markupprice)
@bot.callback_query_handler(func=lambda callback: callback.data)
def chech_callback_data(callback):
if callback.data == 'rate':
markupback = types.InlineKeyboardMarkup()
btnback = types.InlineKeyboardButton('Назад↩️', callback_data='back')
markupback.add(btnback)
bot.send_message(callback.message.chat.id, '*Текущий курс юаня ¥: 12.8₽*', reply_markup=markupback,
parse_mode="Markdown")
elif callback.data == 'order':
markupback = types.InlineKeyboardMarkup()
btnback = types.InlineKeyboardButton('Назад↩️', callback_data='back')
markupback.add(btnback)
bot.send_message(callback.message.chat.id, '*Оформление заказа: @exposemngr*', reply_markup=markupback,
parse_mode="Markdown")
elif callback.data == 'order2':
markupback = types.InlineKeyboardMarkup()
btnback = types.InlineKeyboardButton('Меню?', callback_data='back')
markupback.add(btnback)
bot.send_message(callback.message.chat.id, '*Оформление заказа: @exposemngr*', reply_markup=markupback,
parse_mode="Markdown")
elif callback.data == 'calc':
calc(message)
elif callback.data == 'reset':
calc(message)
elif callback.data == 'back':
main(message)
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: AnnaBazueva
→ Ссылка
Отступы имеют значение.
import telebot
from telebot import types
import webbrowser
import math
bot = telebot.TeleBot('0000000000:AAAA1aA1aa1a1AA1Aa_Aaa1AaAAaaAaaaa')
@bot.message_handler(commands=['start'])
def main(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Калькулятор?', callback_data='calc')
btn2 = types.InlineKeyboardButton('Курс?', callback_data='rate')
btn3 = types.InlineKeyboardButton('Оформить заказ?', callback_data='order')
btn4 = types.InlineKeyboardButton('Отзывы?', url='https://t.me/exposefeedback')
markup.row(btn1, btn2)
markup.add(btn3)
markup.add(btn4)
file = open('./photo.jpg', 'rb')
bot.send_photo(message.chat.id, file)
bot.send_message(message.chat.id, f'⚡️Привет, в этом боте от сервиса EXPOSE ORDER ты сможешь рассчитать стоимость товаров с китайских маркетплейсов, таких как:\n\n1. POIZON, 95;\n2. Taobao, Pinduoduo;\n\n?*Для оформления заказа обращаться в личные сообщения: @exposemngr*', reply_markup=markup, parse_mode="Markdown")
def calc(message):
prices = open('./prices.jpg', 'rb')
bot.send_photo(message.chat.id, prices)
bot.send_message(message.chat.id,
'*¥1649 (2-3 дня)*\n- быстрый способ доставки по Китаю (2-3 дня)\n- товар находится на складе POIZON;\n- товар прошел проверку на подлинность, имеет бирки и сертификат POIZON;\n\n*~¥1100 - НЕ ВЫКУПАЮ*\n- товар находится за пределами Китая;\n\n*¥1449 (5-6 дней)*\n- более долгая доставка по Китаю (5-6 дней)\n- как правило, товар находится не на складе POIZON, сперва он будет отправлен продавцом на склад POIZON для проверки на подлинность, после удачной проверки он отправляется далее;',
parse_mode="Markdown")
input = bot.reply_to(message, '*Введите цену в юанях ¥:*', parse_mode="Markdown")
bot.register_next_step_handler(input, get_price)
def get_price(message):
markupprice = types.InlineKeyboardMarkup()
btncalcomt = types.InlineKeyboardButton('Рассчитать еще?', callback_data='reset')
btncalcback = types.InlineKeyboardButton('Меню?', callback_data='back')
btncalcorder = types.InlineKeyboardButton('Оформить заказ?', callback_data='order2')
markupprice.row(btncalcomt, btncalcback)
markupprice.add(btncalcorder)
global price
price = math.ceil(float(message.text) * 12.8 + 650.0)
priceusdt = math.ceil(float(price) / 90.0)
bot.send_message(message.chat.id,
f'*{price}₽ ({priceusdt} USDT)* - цена с учетом комиссии, страховки и доставки товара со склада POIZON до склада в КИТАЕ\n\n❗️Оплата доставки Китай - РФ производится ОТДЕЛЬНО после получения и взвешивания товара на складе в Китае:\n1. Авто - 1000₽/кг\n\nСрок доставки: 14 дней до Москвы\n\nСтоимость доставки по России входит в выбранный вами тариф (Авто)',
parse_mode="Markdown", reply_markup=markupprice)
@bot.callback_query_handler(func=lambda callback: callback.data)
def chech_callback_data(callback):
if callback.data == 'rate':
markupback = types.InlineKeyboardMarkup()
btnback = types.InlineKeyboardButton('Назад↩️', callback_data='back')
markupback.add(btnback)
bot.send_message(callback.message.chat.id, '*Текущий курс юаня ¥: 12.8₽*', reply_markup=markupback,
parse_mode="Markdown")
elif callback.data == 'order':
markupback = types.InlineKeyboardMarkup()
btnback = types.InlineKeyboardButton('Назад↩️', callback_data='back')
markupback.add(btnback)
bot.send_message(callback.message.chat.id, '*Оформление заказа: @exposemngr*', reply_markup=markupback,
parse_mode="Markdown")
elif callback.data == 'order2':
markupback = types.InlineKeyboardMarkup()
btnback = types.InlineKeyboardButton('Меню?', callback_data='back')
markupback.add(btnback)
bot.send_message(callback.message.chat.id, '*Оформление заказа: @exposemngr*', reply_markup=markupback,
parse_mode="Markdown")
elif callback.data == 'calc':
calc(callback.message)
elif callback.data == 'reset':
calc(callback.message)
elif callback.data == 'back':
main(callback.message)
bot.polling(none_stop=True)
так же поправила этот блок кода:
elif callback.data == 'calc':
calc(callback.message)
elif callback.data == 'reset':
calc(callback.message)
elif callback.data == 'back':
main(callback.message)