


Проблема с кодом на python для бот-чата телеграмм
Здравствуйте такая проблема происходит с кодом для чат-бота на python
в крации есть команда /up
она повышает пользователя в ранге
на нее есть 2 триггера
1 триггер /up @username ранг (1-3)
2 триггер в ответ на сообщение то есть /up 1-3
2 триггер работает хорошо но вот 1 работает не корректно
я предполагаю что бот не может получить @username человека
код ниже
ошибка журнала тоже ниже
пожалуйста помогите исправить код!
P.s код писала нейросеть
https://github.com/Frelinq-afk/error-code.git
Вот исправленный код: https://pastebin.com/iNRAsjwQ
Проблема в том, как ваш код обрабатывает упоминания пользователей (@username). Нейросеть, скорее всего, некорректно интерпретировала, как Telegram API передает информацию об упоминаниях в сообщении. Вместо того, чтобы напрямую извлекать username из текста, нужно использовать данные, предоставляемые Telegram API о пользователях, упомянутых в сообщении. Предполагается, что ваш обработчик сообщений получает объект update от Telegram Bot API. Этот объект содержит информацию о сообщении, включая список упомянутых пользователей.
import telebot
from telebot import types
# ... ваш код ...
@bot.message_handler(commands=['up'])
def handle_up(message):
text = message.text.split()
chat_id = message.chat.id
if len(text) == 3: # Обрабатываем /up @username ранг
try:
username = text[1]
rank = int(text[2])
# Здесь проблема! Нельзя просто взять username из текста
# Нужно найти ID пользователя по username с помощью метода get_chat_member
member = bot.get_chat_member(chat_id, username)
if member:
user_id = member.user.id
# ... ваш код для повышения ранга пользователя с user_id ...
else:
bot.reply_to(message, "Пользователь не найден.")
except ValueError:
bot.reply_to(message, "Неверный формат команды. Используйте /up @username ранг (1-3).")
except IndexError:
bot.reply_to(message, "Неверный формат команды. Используйте /up @username ранг (1-3).")
elif len(text) == 2: # Обрабатываем /up ранг (ответ на сообщение)
try:
rank = int(text[1])
# ... ваш код для повышения ранга пользователя, который отправил сообщение ...
# Здесь user_id будет message.from_user.id
user_id = message.from_user.id
# ... ваш код для повышения ранга пользователя с user_id ...
except ValueError:
bot.reply_to(message, "Неверный формат команды. Используйте /up 1-3.")
else:
bot.reply_to(message, "Неверный формат команды. Используйте /up @username ранг (1-3) или /up 1-3 в ответ на сообщение.")
# ... остальной ваш код ...