@KirillSafe

Как правильно парсить в телебот и requests?

Пишу код для себя по приколу, так сказать практикуюсь.
Решил узнать как парсить API.
Суть кода: я задаю запрос боту командой /username_search username123 бот загружает через api все данные, фильтрует всех участников, ищет клан, и отправляет о нем информацию. Но что-то пошло не так и бот не находит юзернейм(проводил тесты с KirillSafe и BlackSauron)
Но если выводить всех юзеров через принт то их ники там будут
Код:
import telebot, requests
from replit import db
TOKEN = db["token"]
bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['username_search'])
def search_clan_by_user(message):
    nickname = message.text.lower()  
    data = get_clans_data()
    all_leaders = []
    found = False #if "leaders" in clan_data and clan_data["leaders"] is not None and len(clan_data["leaders"]) > 0:
    for clan_name, clan_data in data.items():
      if "leaders" in clan_data and clan_data["leaders"] is not None and len(clan_data["leaders"]) > 0:
          all_leaders.extend(clan_data["leaders"])  # Add leaders to the list
      if "trusted" in clan_data and clan_data["trusted"] is not None and len(clan_data["trusted"]) > 0:
          all_leaders.extend(clan_data["trusted"])
      if "officers" in clan_data and clan_data["officers"] is not None and len(clan_data["officers"]) > 0:
          all_leaders.extend(clan_data["officers"])
      if "members" in clan_data and clan_data["members"] is not None and len(clan_data["members"]) > 0:
          all_leaders.extend(clan_data["members"])
      if "newbies" in clan_data and clan_data["newbies"] is not None and len(clan_data["newbies"]) > 0:
           all_leaders.extend(clan_data["newbies"])
          #получаем всех дядя негро 
      if nickname in all_leaders: #ал лидерс это алл мемберс мне лень менять
        
        #найден ли дядя негр
          found = True
          bot.send_message(message.chat.id, format_clan_info(clan, clan_data))
    if not found:
        bot.send_message(message.chat.id, 'Увы, я не смог найти ваш клан ')

def get_clans_data():
    response = requests.get('https://excalibur-craft.ru/engine/ajax/clans/api.php')
    data = response.json()
    return data

def format_clan_info(clan, clan_data):
    return f"Клан: {clan}\nАйди: {clan_data['id']}\nОпыт: {clan_data['xp']}\nОпыт за неделю: {clan_data['week_xp']}\nГолоса: {clan_data['votes']}\nОписание: {clan_data['motto']}"
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@twistfire92
Python backend developer
а вы хоть смотрели что попадает в nickname после выполнения nickname = message.text.lower()?
там по идее всегда будет "/username_search"

После команды предлагайте пользователю отдельно ввести свой никнейм.
Воспользуйтесь bot.register_next_step_handler()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы