Вопрос-Ответ

Scroogee

Участник
Автор темы
149
19
Приветствую всех! У меня опять проблема с кодом в боте тг, сделал я значит курс криптовалют в боте, и сделал функцию которая отвечает "Такой криптовалюты нет!" это типо если человек напишет крипту которой нету, и такая проблема что эта фраза теперь почти всегда отправляется когда нажимаю на кнопки. Если нужен весь код то напишите выложу

На первом снимке выделенный текст ответ на кнопку с криптой
На втором снимке это сама функция которая отправляет курс
И чуть незабыл, API от CoinGecko

Про 2 снимок забыл

И вот снимок в самом телеграмме

А и еще, можно ли как-то сделать чтобы else отвечал на определённую функцию. Например чтобы когда я написал не ту крипту он писал точто такой крипты нету, а когда написал не про крипту он отвечал по другому
 

Вложения

  • изображение_2022-09-06_130723751.png
    изображение_2022-09-06_130723751.png
    158.8 KB · Просмотры: 27
  • изображение_2022-09-06_130959582.png
    изображение_2022-09-06_130959582.png
    87.8 KB · Просмотры: 27
  • изображение_2022-09-06_131209907.png
    изображение_2022-09-06_131209907.png
    169.7 KB · Просмотры: 28
Последнее редактирование:

Scroogee

Участник
Автор темы
149
19
Кодик:
# Beginning imports
import telebot
import random
from random import choice
from datetime import datetime
from pycbrf import ExchangeRates
from pycoingecko import CoinGeckoAPI
from telebot import types

# The end imports


# Token bot, api
bot = telebot.TeleBot("5713982002:AAFplyW-HUBPx-AyhqGmkLLx4PgjfpF7fww")
api = CoinGeckoAPI()
valuta = "usd"


# Token bot, api


# Beginning command start
@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id,
                     "Приветсвую! Это очень крутой бот и тебе повезло что ты его нашел! Пиши /menu чтобы открыть меню бота. А и еще если несложно подпишись на мой канал в телеге (/channel).")


# The end command start


# Beginning command channel
@bot.message_handler(commands=['channel'])
def channel(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Подпишись если несложно", url="https://t.me/TheScroogeeBand"))
    bot.send_message(message.chat.id, "Вот мой канал", reply_markup=markup)


# The end command channel


# Beginning command menu
@bot.message_handler(commands=['menu'])
def menubot(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    InfoBot = types.KeyboardButton("📃Информация о боте📃")
    Predl = types.KeyboardButton("📋Предложение улучшение для бота📋")
    SocSeti = types.KeyboardButton("📱Социальные Сети создателя📱")
    Drugoe = types.KeyboardButton("🗂Другое🗂")
    markup.add(InfoBot, Predl, SocSeti, Drugoe)
    bot.send_message(message.chat.id, "Выбирай!", reply_markup=markup)


# The end command menu


# Beginning otvets menu
@bot.message_handler(content_types=['text'])
def otvetmenu(message):
    if message.chat.type == "private":
        if message.text == '📃Информация о боте📃':
            bot.send_message(message.chat.id,
                             "Приветсвую! Это очень полезный бот, в этом боте ты сможешь найти очень много всего ")
        elif message.text == '📋Предложение улучшение для бота📋':
            bot.send_message(message.chat.id, "Писать в ответы закреп канала! https://t.me/TheScroogeeBand")
        elif message.text == '📱Социальные Сети создателя📱':
            bot.send_message(message.chat.id, "TG: https://t.me/ScroogeeKryt\n"
                                              "Discord:\n"
                                              "VK:\n"
                                              "TikTok:")
        elif message.text == '🗂Другое🗂':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
            PolezSh = types.KeyboardButton("💡Полезные штуки💡")
            Kyrs = types.KeyboardButton("📊Курсы📊")
            Games = types.KeyboardButton("🎮Развлечение🎮")
            Random = types.KeyboardButton("🎲Рандом🎲")
            GMenu = types.KeyboardButton("🚪Главное меню🚪")
            markup.add(PolezSh, Kyrs, Games, Random, GMenu)
            bot.send_message(message.chat.id, "Выбирай!", reply_markup=markup)
        elif message.text == '💡Полезные штуки💡':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
            Sait = types.KeyboardButton("🖥Сайты которые тебе пригодятся🖥")
            Bots = types.KeyboardButton("🤖Телеграмм боты которые тебе пригодятся🤖")
            GMenu = types.KeyboardButton("🚪Главное меню🚪")
            markup.add(Sait, Bots, GMenu)
            bot.send_message(message.chat.id, "Выбирай!", reply_markup=markup)
        elif message.text == '🖥Сайты которые тебе пригодятся🖥':
            bot.send_message(message.chat.id, "🏆1 Место: https://www.blast.hk\n"
                                              "🥇1 Место: https://lolz.guru\n"
                                              "‼️Это самые топовые сайты, других небудет.‼️")
        elif message.text == '🤖Телеграмм боты которые тебе пригодятся🤖':
            bot.send_message(message.chat.id,
                             "‼️На 1000 подписчиков в канале тг сделаю ботов для зароботка(/channel)‼️\n"
                             "Ищет каналы в Telegram по тематике, названию или username. - @SearcheeBot\n"
                             "Бот Телеграм, присылающий анекдоты и прикольные картинки. База анекдотов не самая большая, но в целом бот приятный. - @Anekdotebot\n"
                             "Бот, собирающий приколы и мемы со всех уголков Рунета. Русскоязычный, на каждую картинку можно получить ссылку и узнать откуда она. - @MemMachineBot")
        elif message.text == '📊Курсы📊':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
            Valuta = types.KeyboardButton("💵Курсы валют💵")
            Crypta = types.KeyboardButton("💳Курсы КриптоВалют💳")
            markup.add(Valuta, Crypta)
            bot.send_message(message.chat.id, "Выбирай", reply_markup=markup)
        elif message.text == '💵Курсы валют💵':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
            usd = types.KeyboardButton("USD")
            eur = types.KeyboardButton("EUR")
            gbp = types.KeyboardButton("GBP")
            GMenu = types.KeyboardButton("🚪Главное меню🚪")
            markup.add(usd, eur, gbp, GMenu)
            bot.send_message(message.chat.id, "Выбери валюту", reply_markup=markup)
        elif message.text == '💳Курсы КриптоВалют💳':
            bot.send_message(message.chat.id, "Напиши полное название криптовалюты, обезательно с маленькой буквы, и я покажу ее курс")
        elif message.text == '🎮Развлечение🎮':
            bot.send_message(message.chat.id, "Игры в разработке.")
        elif message.text == '🎲Рандом🎲':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
            RandCh = types.KeyboardButton("❓Рандом чисел❓")
            Kosti = types.KeyboardButton("🎲Кости🎲")
            OrelIReshka = types.KeyboardButton("🪙Орёл и Решка🪙")
            GMenu = types.KeyboardButton("🚪Главное меню🚪")
            markup.add(RandCh, Kosti, OrelIReshka, GMenu)
            bot.send_message(message.chat.id, "Test", reply_markup=markup)
        elif message.text == '❓Рандом чисел❓':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
            itsnumber = types.KeyboardButton("❓Свое число❓")
            ot_0_do_10 = types.KeyboardButton("❓Случайно число от 0 до 10❓")
            ot_0_do_100 = types.KeyboardButton("❓Случайно число от 0 до 100❓")
            ot_0_do_500 = types.KeyboardButton("❓Случайно число от 0 до 500❓")
            ot_0_do_1000 = types.KeyboardButton("❓Случайно число от 0 до 1000❓")
            ot_0_do_1500 = types.KeyboardButton("❓Случайно число от 0 до 1500❓")
            ot_0_do_2000 = types.KeyboardButton("❓Случайно число от 0 до 2000❓")
            ot_0_do_2500 = types.KeyboardButton("❓Случайно число от 0 до 2500❓")
            GMenu = types.KeyboardButton("🚪Главное меню🚪")
            markup.add(itsnumber, ot_0_do_10, ot_0_do_100, ot_0_do_500, ot_0_do_1000, ot_0_do_1500, ot_0_do_2000,
                       ot_0_do_2500, GMenu)
            bot.send_message(message.chat.id, "Выбирай!", reply_markup=markup)
        elif message.text == '❓Свое число❓':
            bot.send_message(message.chat.id,
                             "Введите от скольки и до скольки должно быть рандомное число(Пример: От 0 до 5)")
        elif message.text == '❓Случайно число от 0 до 10❓':
            bot.send_message(message.chat.id, "Вот твое случайное число: " + str(random.randint(0, 10)))
        elif message.text == '❓Случайно число от 0 до 100❓':
            bot.send_message(message.chat.id, "Вот твое случайное число: " + str(random.randint(0, 100)))
        elif message.text == '❓Случайно число от 0 до 500❓':
            bot.send_message(message.chat.id, "Вот твое случайное число: " + str(random.randint(0, 500)))
        elif message.text == '❓Случайно число от 0 до 1000❓':
            bot.send_message(message.chat.id, "Вот твое случайное число: " + str(random.randint(0, 1000)))
        elif message.text == '❓Случайно число от 0 до 1500❓':
            bot.send_message(message.chat.id, "Вот твое случайное число: " + str(random.randint(0, 1500)))
        elif message.text == '❓Случайно число от 0 до 2000❓':
            bot.send_message(message.chat.id, "Вот твое случайное число: " + str(random.randint(0, 2000)))
        elif message.text == '❓Случайно число от 0 до 2500❓':
            bot.send_message(message.chat.id, "Вот твое случайное число: " + str(random.randint(0, 2500)))
        elif message.text == '🎲Кости🎲':
            bot.send_message(message.chat.id, str(random.randint(1, 6)))
        elif message.text == '🪙Орёл и Решка🪙':
            oir = choice(['Орёл', 'Решка'])
            bot.send_message(message.chat.id, oir)
        elif message.text == '🚪Главное меню🚪':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
            InfoBot = types.KeyboardButton("📃Информация о боте📃")
            Predl = types.KeyboardButton("📋Предложение улучшение для бота📋")
            SocSeti = types.KeyboardButton("📱Социальные Сети создателя📱")
            Drugoe = types.KeyboardButton("🗂Другое🗂")
            markup.add(InfoBot, Predl, SocSeti, Drugoe)
            bot.send_message(message.chat.id, "Выбирай!", reply_markup=markup)
    # The end otvets menu

    # Beginning kyrs valut
    message1 = message.text.strip().lower()

    if message1 in ['usd', 'eur', 'gbp']:
        rates = ExchangeRates(datetime.now())
        bot.send_message(message.chat.id, f"{message1.upper()} Current course: {float(rates[message1.upper()].rate)} ₽")
    # The end kyrs valut

    #Beginning kyrs krypto
    crypto_id = message.text
    price = (api.get_price(ids=crypto_id, vs_currencies=valuta))

    if price:
        price = price[crypto_id][valuta]
    else:
        bot.send_message(message.chat.id, "Я тебя не понимаю!")
        return

    bot.send_message(message.chat.id, f"Price of {crypto_id}: {price}$")
    # The end kyrs krypto


bot.polling(none_stop=True)
 
Последнее редактирование:

munnniisss

Активный
155
44
используй states в коде, чтобы после сообщения '💳Курсы КриптоВалют💳', он ожидал сообщения о крипте, а уже его ты обрабатывай, а то у тебя как название крипты обрабатывается '💳Курсы КриптоВалют💳' и конечно такой крипты не находит. если не поймёшь как стейты впихнуть(лучше юзай aiogram), то сделай так чтобы он ловил все сообщения с '💳Курсы КриптоВалют💳' и человек мог написать так. '💳Курсы Криптовалюты BTC'. потом делай split строки по пробелу и последний элемент списка после сплита будет твоим названием крипты и уже его обрабатывай. если что не понял, то пиши мне в тг, помогу тебе