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

Помогите исправить код

Nadya Balkarova Ученик (77), закрыт 11 месяцев назад
Помогите исправить код
телеграмм бот отправляет только одно имя вместо всех участников в группe
 @bot.message_handler(content_types=['text']) 
def get_text_message(message):
if "Макс кто" in message.text:
get_word = message.text[(message.text.rfind(" ")) + 1:]
user_link = f'{message.from_user.first_name}'
bot.send_message(message.chat.id, f"? Тут {get_word}, только ты {user_link}", parse_mode='HTML')
Лучший ответ
e404 Гуру (3067) 1 год назад
Чтобы бот показывал всех участников бота, лучше использовать базу данных. Тут она просто обязательно нужна, например, SqLite3.
 db = sqlite3.connect('database.db', check_same_thread=False) 
sql = db.cursor()
sql.execute("""CREATE TABLE IF NOT EXISTS users (
user_id INT,
user_name TEXT
)""")
db.commit()
Создали БД.
Чтобы вытащить все user_name из нее:
 full_username = sql.execute("SELECT user_name FROM users").fetchall() 
Потом просто использовать эту переменную.
Чтобы добавить данные в БД:
 users_id = message.chat.id
users_name = message.from_user.username
sql.execute("INSERT INTO users VALUES (?, ?);", (users_id, users_name))
db.commit()
Остальные ответы
Тая Ермалаева Знаток (306) 1 год назад
Емае, какой код?
Nadya BalkarovaУченик (77) 1 год назад
@bot.message_handler(content_types=['text'])
def get_text_message(message):
if "Макс кто" in message.text:
get_word = message.text[(message.text.rfind(" ")) + 1:]
user_link = f'<a href="tg://user?id={message.chat.id}">{message.from_user.first_name}</a>'
bot.send_message(message.chat.id, f"? Тут {get_word}, только ты {user_link}", parse_mode='HTML')

этот
Professional Professional Мудрец (15222) 1 год назад
@bot.message_handler(content_types=['text'])
def get_text_message(message):
if "Макс кто" in message.text:
get_word = message.text[(message.text.rfind(" ")) + 1:]
members = ""
for member in bot.get_chat_members(message.chat.id):
if member.user.username is not None:
members += "@" + member.user.username + " "
bot.send_message(message.chat.id, f"? Тут {get_word}, только вы {members}", parse_mode='HTML')

Код был исправлен. Теперь вместо одного имени бот отправляет список всех участников группы.
Nadya BalkarovaУченик (77) 1 год назад
File "C:\Users\максим\PycharmProjects\pythonProject\MaksCoolBro-Bot.py", line 34, in get_text_message
for member in bot.get_chat_members(message.chat.id):
^^^^^^^^^^^^^^^^^^^^
AttributeError: 'TeleBot' object has no attribute 'get_chat_members'. Did you mean: 'get_chat_member'?
Nadya BalkarovaУченик (77) 1 год назад
не работает(
Professional Professional Мудрец (15222) Nadya Balkarova, попробуй так @bot.message_handler(content_types=['text']) def get_text_message(message): if "Макс кто" in message.text: get_word = message.text[(message.text.rfind(" ")) + 1:] user_link = f'<a href="tg://user?id={message.from_ user.id }">{message.from_user.first_name}</a>' bot.send_message(message.chat.id, f"? Тут {get_word}, только ты {user_link}", parse_mode='HTML')
Похожие вопросы