@sunekosuri

Как убрать повторную отправку сообщения?

В моём боте есть две вот такие функции с проверкой id из БД. Когда твой id находится в БД администраторов и в БД пользователей, то отправляется оба сообщения. Помогите исправить. Добавление ещё одного цикла проверки не помогло.

#стартовая проверка на то, что ты студент и вывод студенческой клавиатуры 
	connect = sqlite3.connect('users.db')
	cursor = connect.cursor()
	for user in cursor.execute('SELECT * FROM login_id ORDER BY id'):
		if message.chat.id == user[0]:
			kb = types.ReplyKeyboardMarkup(True)
			kb.row('Звонки')
			kb.row('☔️ Погода ☀️')
			bot.send_message(message.chat.id, 
		"‍Приветствую, студент‍.\n" +
		"Ты попал в чат-бот Беловского педагогического колледжа.\n\n" +
		"Напиши /help чтобы ознакомиться с функциями.", reply_markup=kb)					
	connect.commit()		
# Тоже самое, но для админов
	connect = sqlite3.connect('admins.db')
	cursor = connect.cursor()
	for admin in cursor.execute('SELECT * FROM admins_id ORDER BY id'):
		if message.chat.id == admin[0]:
			akb = types.ReplyKeyboardMarkup(True)
			akb.row('Звонки')
			akb.row('☔️ Погода ☀️')
			akb.row('✉️ Рассылка ')
			bot.send_message(message.chat.id, 
		"‍Здравствуйте, вы являетесь администратором чат-бота.‍\n\n" +
		"Напишите /ahelp чтобы ознакомиться с функциям.", reply_markup=akb)	
	connect.commit()	
#- - - - - - - - - - - - - - - -
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
@alegzz
user = [x[0] for x in cursor.execute('SELECT * FROM login_id ORDER BY id') if x[0] == message.chat.id]
admin = [x[0] for x in cursor.execute('SELECT * FROM login_id ORDER BY id') if x[0] == message.chat.id]

if user:
    pass
elif admin:
    pass
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sanya84
@sanya84
Фанатик Python 3
После обеих проверок, сравните id-шники и если равны отправьте сообщение.
Иначе там что то ещё.
Отправку сообщения вынесите дальше по коду.
Ответ написан
Комментировать
@liquiddeath13
Сформируйте ответ до его отправки (в проверках), а после - вызовите отправку сообщения. Таким образом вы отправите именно то, что необходимо
Не особо сильно "умею в питон", но вероятно, что-то вроде такого:
kb = types.ReplyKeyboardMarkup(True)
  bot_answer = ""
#стартовая проверка на то, что ты студент и вывод студенческой клавиатуры 
  connect = sqlite3.connect('users.db')
  cursor = connect.cursor()
  for user in cursor.execute('SELECT * FROM login_id ORDER BY id'):
    if message.chat.id == user[0]:
      kb.row('Звонки')
      kb.row('☔️ Погода ☀️')
      bot_answer = "Приветствую, студент‍.\nТы попал в чат-бот Беловского педагогического колледжа.\n\nНапиши /help чтобы ознакомиться с функциями."					
  connect.commit()		
# Тоже самое, но для админов
  connect = sqlite3.connect('admins.db')
  cursor = connect.cursor()
  for admin in cursor.execute('SELECT * FROM admins_id ORDER BY id'):
    if message.chat.id == admin[0]:
      kb.row('Звонки')
      kb.row('☔️ Погода ☀️')
      kb.row('✉️ Рассылка ')
      bot_answer = "Здравствуйте, вы являетесь администратором чат-бота.‍\n\nНапишите /ahelp чтобы ознакомиться с функциям."	
  connect.commit()
# Отправка сообщения
  bot.send_message(message.chat.id, bot_answer, reply_markup=kb)	
#- - - - - - - - - - - - - - - -
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы