Error code: 400. Description: Bad Request: chat not found
Помогите исправить ошибку, которая происходит при выполнении def news. Сам код:
users = sqlite3.connect('users', check_same_thread=False)
users.cursor()
users.execute("""CREATE TABLE IF NOT EXISTS users (usersid TEXT)""")
users.commit()
@bot.message_handler(commands=["start"])
def welcome(message):
if not str(message.chat.id) in users.execute("SELECT * FROM users"):
users.execute(f"INSERT INTO users VALUES (?)", (message.chat.id,))
users.commit()
@bot.message_handler(commands=['new'])
def news(message):
for user in users.execute('SELECT * FROM users'):
bot.send_message(user, message.text[message.text.find(' '):])
После использования функции new получаю ошибку, хотя код и продолжает работать:
ERROR - TeleBot: "A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: chat not found"
UPD: Забыл упомянуть, что id пользователей уже записаны, поэтому юзеры уже начинали диалог с ботом
Ответы (1 шт):
Автор решения: Magmuss1
→ Ссылка
Разобрался со своей проблемой. Готовый рабочий код + немного дополнил. Надо было указать массив 0:
def callback_inline(call):
users = sqlite3.connect('users.db')
cursor = users.cursor()
cursor.execute ("""CREATE TABLE IF NOT EXISTS usersid (id TEXT)""")
users.commit()
people_id = call.message.chat.id
cursor.execute(f"SELECT id FROM usersid WHERE id = {people_id}")
data = cursor.fetchone()
if data is None:
user_id = [call.message.chat.id]
cursor.execute("INSERT INTO usersid VALUES(?);", user_id)
users.commit()
@bot.message_handler(commands=['new'])
def news(message):
command_sender = message.from_user.id
if command_sender in admins:
users = sqlite3.connect('users.db')
cursor = users.cursor()
for user in cursor.execute(f"SELECT id FROM usersid"):
bot.send_message(user[0], message.text[message.text.find(' '):])
logging.info(f"Новая рассылка: {message.text} by userid: {message.chat.id}")
else:
bot.send_message(command_sender, "У тебя нет доступа к этой команды")