Здравствуйте пишу своего бота, бот отправляет сообщение только тем у кого есть username, у кого нет его тому они не доходят.?



@galaxy3141

@bot.message_handler(content_types=["text"])
def message_send(message):
	if '/start' == message.text:
		if message.chat.username:
			if dop.get_sost(message.chat.id) is True: 
				with shelve.open(files.sost_bd) as bd: del bd[str(message.chat.id)]
			if message.chat.id in in_admin: in_admin.remove(message.chat.id)
			if message.chat.id == config.admin_id and dop.it_first(message.chat.id) is True: in_admin.append(message.chat.id)
			elif dop.it_first(message.chat.id) is True and message.chat.id not in dop.get_adminlist():
				bot.send_message(message.chat.id, 'Бот ещё не готов к работе!nЕсли вы являетесь его администратором, то войдите из под аккаунту, id которого указали при запуске бота и подготовьте его к работе!')
			elif dop.check_message('start') is True:
				key = telebot.types.InlineKeyboardMarkup()
				key.add(telebot.types.InlineKeyboardButton(text="Перейти к каталогу товаров", callback_data="Перейти к каталогу товаров"))
				with shelve.open(files.bot_message_bd) as bd: start_message = bd['start']
				start_message = start_message.replace('username', message.chat.username)
				start_message = start_message.replace('name', message.from_user.first_name)
				bot.send_message(message.chat.id, start_message, reply_markup=key)	
			elif dop.check_message('start') is False and message.chat.id in dop.get_adminlist():
				bot.send_message(message.chat.id, 'Приветствие ещё не добавлено!nЧтобы его добавить, перейдите в админку по команде /adm и *настройте ответы бота*', parse_mode="Markdown")


Решения вопроса 0


Ответы на вопрос 1



@SoreMix Куратор тега Python

Потому что вы буквально проверяете наличие юзернейма (if message.chat.username:) и выполняете код только если он есть

Ну и для команд есть специальный декоратор. Чтобы не делать if '/start' == message.text: есть @bot.message_handler(commands=["start"])

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *