S
S
sunekosuri2021-04-15 11:06:05
Python
sunekosuri, 2021-04-15 11:06:05

How to remove re-sending a message?

In my bot, there are two such functions with checking id from the database. When your id is in the admin database and in the user database, both messages are sent. Help fix. Adding another check loop didn't help.

#стартовая проверка на то, что ты студент и вывод студенческой клавиатуры 
  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()	
#- - - - - - - - - - - - - - - -

Answer the question

In order to leave comments, you need to log in

3 answer(s)
A
alegzz, 2021-04-15
@sunekosuri

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

A
Alexander, 2021-04-15
@sanya84

After both checks, compare the IDs and if they are equal, send a message.
Otherwise, there is something else.
Send the message further in the code.

L
liquiddeath13, 2021-04-15
@liquiddeath13

Form a response before it is sent (in checks), and then call the message to be sent. This way you will send exactly what is needed
. Not very "I know how to use python", but probably something like this:

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)	
#- - - - - - - - - - - - - - - -

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question