HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 06.09.2022, 14:09
Scroogee
Участник форума
Регистрация: 29.07.2022
Сообщений: 148
С нами: 1997237

Репутация: 23
По умолчанию

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

На первом снимке выделенный текст ответ на кнопку с криптой

На втором снимке это сама функция которая отправляет курс

И чуть незабыл, API от CoinGecko

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

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

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

  #2  
Старый 06.09.2022, 14:46
chapo
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами: 5046982

Репутация: 183


По умолчанию

кинь полный код обработки сообщений
 
Ответить с цитированием

  #3  
Старый 06.09.2022, 15:17
Scroogee
Участник форума
Регистрация: 29.07.2022
Сообщений: 148
С нами: 1997237

Репутация: 23
По умолчанию

Кодик:





Код:
# 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)
 
Ответить с цитированием

  #4  
Старый 06.09.2022, 15:31
chapo
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами: 5046982

Репутация: 183


По умолчанию

на 169 строке поставь else

( что бы код выполнялся если ни одна из команд не отправлена )
 
Ответить с цитированием

  #5  
Старый 06.09.2022, 15:55
Scroogee
Участник форума
Регистрация: 29.07.2022
Сообщений: 148
С нами: 1997237

Репутация: 23
По умолчанию

Цитата:
Сообщение от chapo  

на 169 строке поставь else
( что бы код выполнялся если ни одна из команд не отправлена )
Все также(
 
Ответить с цитированием

  #6  
Старый 07.09.2022, 12:53
munnniisss
Участник форума
Регистрация: 23.12.2019
Сообщений: 155
С нами: 3363619

Репутация: 33
По умолчанию

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





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.