Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Telegram bot Библиотека Telebot

Роман Летнев Мастер (1082), на голосовании 1 месяц назад
     if message.text == 'кто я' or message.text == 'Кто я': 
if not is_admin(message.chat.id, message.from_user.id):
if not is_subscri(CHANNEL_USERNAME, message.from_user.id):
for value in sql.execute(
f"SELECT balance FROM users WHERE chatid = {message.from_user.id}"):
user = f'<a href="tg://user?id={message.from_user.id}">{message.from_user.first_name}</a>'
dp.reply_to(message,
f'<b>?| Вы: [{user}]\n?| Ваш id: [</b><code>{message.from_user.id}</code><b>]'
f'\n?| Ваш мешок:'
f' [{value[0]}₦]\n❌| Ваш статус: [Не админ]\n?| VIP-пропуск: [Отсутствует]'
f'</b>', parse_mode='html')
return

for value in sql.execute(
f"SELECT balance FROM users WHERE chatid = {message.from_user.id}"):
user2 = f'<a href="tg://user?id={message.from_user.id}">{message.from_user.first_name}</a>'
dp.reply_to(message,
f'<b>?| Вы: [{user2}]\n?| Ваш id: [</b><code>{message.from_user.id}</code><b>]'
f'\n?| Ваш мешок:'
f' [{value[0]}₦]\n✅| Ваш статус: [Админ]\n?| VIP-пропуск: [Присутствует]'
f'</b>', parse_mode='html')
Нужна помощь, при вводе команды (''Кто я'') возникает такая проблема:
Юзер не являющийся админом, оказывается админом
То есть, пользователь не является администратором, но бот считает его админом. Как можно решить эту проблему?
Голосование за лучший ответ
CausonQ Мудрец (13842) 2 месяца назад
Судя по отступам, второй цикл for, где выводится Ваш статус: [Админ]\n?, будет выполняться всегда, независимо от того, кто отправляет команду.
Роман ЛетневМастер (1082) 2 месяца назад
Спросил насчёт данной проблемы в «Киберфоруме», там мне ответили, что проблема заключается в блоке
 return 
который находится внутри
 if not is_subscri() 
как я понял, там мне хотели сказать то, что если пользователь не админ, то в боте будет админом за счёт подписки, если убрать
 if not is_subscri() 
то ошибок не будет. Мне сейчас хочется узнать, как решить проблему, чтобы всё работало как надо.

P.S. Тут я прикреплю то, что ответили мне на киберфоруме:
Проблема в твоем коде возникает из-за того, что блок return находится внутри условия if not is_subscri(). Это означает, что если пользователь не является админом, но подписан на канал (то есть is_subscri() возвращает True), условие if not is_subscri() не выполняется, и программа продолжает выполнение кода, предназначенного для администраторов.
Роман ЛетневМастер (1082) 2 месяца назад
В итоге сам справился с проблемой. Спасибо, что хоть откликнулись.
Похожие вопросы