Бот не отвечает на сообщение в беседе
Есть команда баланс, после написания которой бот выводит сообщение с балансом пользователя. Если это сообщение будет написано в лс с ботом, то бот выведет баланс пользователя, если в беседе, то ответа не будет. Как я понимаю бот не может взять айди пользователя через message.chat.id в беседе, но как тогда правильно брать айди пользователя в беседе?
elif message.text.startswith('баланс') or message.text.startswith('бал') or message.text.startswith('Бал') or message.text.startswith('Баланс'):
my_balance(message)
def my_balance(message):
user_id = message.chat.id
conn = sqlite3.connect('database.db', check_same_thread=False)
cur = conn.cursor()
cur.execute('SELECT balance, bank FROM users WHERE user_id=("%s")' % user_id)
users = cur.fetchall()
conn.commit()
for user in users:
bot.reply_to(message, text=f'? Ваш баланс: {user[0]:,}?\n? Банковский счет: {user[1]:,}?')
Ответы (1 шт):
Замените на
user_id = message.from_user.id
В личных чатах с ботом message.from_user.id и message.chat.id всегда равны друг другу, поэтому их часто путают, и не придают этому особого значения, хотя отвечают они за совершенно разные вещи.
message.from_user.id - это id пользователя, который написал сообщение (не важно куда, в личный диалог с ботом, или в группе)
message.chat.id - это id чата, в который пришло это сообщение.