Проблемка с чат ботом телеграмм на основе python
Здравствуйте у меня появилась такая проблема в коде
Код должен повышать людей через команду Up
триггер для бота это Up в ответ на сообщение пользователя и так же Up @username
триггер на ответ работает хорошо а вот при использовании триггера с @username постоянно пишет что пользователь не найдет
код ниже
import sqlite3
import telebot
from telebot import types
def handle_up_down(message, chat_id):
try:
parts = message.text.split()
if len(parts) > 0:
action = parts[0]
if action == "Up" or action == "Down":
target_user_id = None
if message.reply_to_message:
target_user_id = message.reply_to_message.from_user.id
target_username = message.reply_to_message.from_user.username
elif len(parts) > 1:
target_username = parts[1].lstrip('@')
target_user_id = get_user_id_from_username(bot, message.chat.id, target_username)
if target_user_id is None:
bot.reply_to(message, f"Пользователь не найден.")
return
current_rank = get_rank(target_user_id, chat_id)
if action == "Up":
new_rank = min(current_rank + 1, 3)
set_rank(target_user_id, chat_id, new_rank)
bot.reply_to(message, f"Ранг пользователя @{target_username} повышен до {new_rank}")
elif action == "Down":
new_rank = max(current_rank - 1, 1)
set_rank(target_user_id, chat_id, new_rank)
bot.reply_to(message, f"Ранг пользователя @{target_username} понижен до {new_rank}")
else:
bot.reply_to(message, "Неправильный формат команды. Используйте Up/Down @username или в ответ на сообщение.")
except Exception as e:
print(f"Error handling Up/Down command: {e}")
bot.reply_to(message, "Произошла ошибка при изменении ранга.")
вроде все должно работать
не знаю в чем проблема
P.s код написала нейросеть!
А где у тебя хотя бы логирование?
import sqlite3
import telebot
from telebot import types
# Инициализация бота с вашим токеном
bot = telebot.TeleBot("ВАШ_ТОКЕН")
def get_user_id_from_username(bot, chat_id, username):
try:
# Попытка получить пользователя из чата по username
user = bot.get_chat_member(chat_id, username)
return user.user.id if user else None
except Exception as e:
print(f"Ошибка при получении ID пользователя по username: {e}")
return None
def get_rank(user_id, chat_id):
# Ваша логика для получения текущего ранга пользователя
return 1 # Пример возвращаемого значения
def set_rank(user_id, chat_id, new_rank):
# Ваша логика для установки нового ранга пользователя
pass
@bot.message_handler(func=lambda message: True)
def handle_up_down(message):
chat_id = message.chat.id
try:
parts = message.text.split()
if len(parts) > 0:
action = parts[0]
if action == "Up" or action == "Down":
target_user_id = None
target_username = None
if message.reply_to_message:
target_user_id = message.reply_to_message.from_user.id
target_username = message.reply_to_message.from_user.username
elif len(parts) > 1:
target_username = parts[1].lstrip('@')
target_user_id = get_user_id_from_username(bot, message.chat.id, target_username)
print(f"ID пользователя для {target_username}: {target_user_id}")
if target_user_id is None:
bot.reply_to(message, f"Пользователь не найден.")
return
current_rank = get_rank(target_user_id, chat_id)
if action == "Up":
new_rank = min(current_rank + 1, 3)
set_rank(target_user_id, chat_id, new_rank)
bot.reply_to(message, f"Ранг пользователя @{target_username} повышен до {new_rank}")
elif action == "Down":
new_rank = max(current_rank - 1, 1)
set_rank(target_user_id, chat_id, new_rank)
bot.reply_to(message, f"Ранг пользователя @{target_username} понижен до {new_rank}")
else:
bot.reply_to(message, "Неправильный формат команды. Используйте Up/Down @username или в ответ на сообщение.")
except Exception as e:
print(f"Error handling Up/Down command: {e}")
bot.reply_to(message, "Произошла ошибка при изменении ранга.")
# Запуск бота
bot.polling()