Вытащить данные если есть такой id в бд
Библиотека telebot на python, бд mysql
Вот кусок кода:
if message.chat.type == 'private':
markup = types.InlineKeyboardMarkup(row_width=2)
markup.add(item1)
bot.send_message(message.chat.id,
'Привет '+message.from_user.first_name+ ' !\n'+
'Я помогаю отслеживать дни рождения в групповых чатах и '
'могу автоматически собирать деньги в подарок именинникам.\n\n'
'Добавьте меня в любую группу, используя кнопку ниже ?\n\n'
'Не беспокойтесь, мне не нужно быть администратором в группе '
'и я не умею читать переписку ? ',reply_markup=markup)
cursor.execute(f"select * from chats where group_id={str(message.chat.id)}")
ll = cursor.fetchall()
if len(ll) >= 0:
ss = cursor.execute(f"select group_title from chats")
bot.send_message(message.from_user.id, f'Ты пришёл из "{ss}"')
else:
bot.send_message(message.chat.id,'Я не знаю такой группы')
else:
markup = types.InlineKeyboardMarkup(row_width=2)
item2 = types.InlineKeyboardButton('Добавить свой ДР в каленьдарь',
url=f"http://t.me/{bot.get_me().username}?start={message.chat.id}")
markup.add(item2)
bot.send_message(message.chat.id, group_start_text, reply_markup=markup)
Юзер по кнопке из группы переходит в бота,в этой кнопке хранится id этой группы.Нужно что бы бот написал при заходе в бота из группы,из какой группы он пришел.Я пытаюсь вытащить sql запросом но не получается.Подскажите как правильно,структура бд на скрине.
Ответы (1 шт):
Ошибка у Вас в том, что вы путаете chat.id и group_id. То есть вы делаете следующее:
cursor.execute(f"select * from chats where group_id={str(message.chat.id)}")
ll = cursor.fetchall()
Вы пытаетесь подставить в sql-запрос chat_id с пользователем. Чтоб в этом удостовериться, напишите в коде следующее:
print(message.chat.id)
Вы увидите, что результат не отрицательный, и такого значения в вашей БД нет.
Так же message.chat.id в Телеграмме не бывают отрицательные (по крайней мере я такого не видел). Поэтому Вы получаете из этого sql-запроса тип данных - "None" и появляется ошибка TypeError из-за того, что нельзя проверить его на длину с помощью len().
Чтоб Вам было проще - выводите в консоль значения, которые получаете посредством sql-запросов :)

