мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
zadanie_bonusnoe._telegrambot [2024/04/26 14:52] wikiadminzadanie_bonusnoe._telegrambot [2024/05/25 03:47] (текущий) wikiadmin
Строка 1: Строка 1:
 +======= Задание бонусное. TelegramBot =======
  
 Устанавливаем пакет python3-venv Устанавливаем пакет python3-venv
Строка 14: Строка 15:
 (tgbot) в начале командной строки означает, что мы находимся внутри виртуального окружения (tgbot) в начале командной строки означает, что мы находимся внутри виртуального окружения
  
-Установим пакет aiogram внутри виртуального окружения:+Для выхода из виртуального окружения можно набрать команду "deactivate", но сейчас нам это не нужно. 
 + 
 +Установим библиотеку aiogram внутри виртуального окружения:
 <code>pip install aiogram</code> <code>pip install aiogram</code>
  
-Убедимся, что установили пакет:+Убедимся, что установили библиотеку:
 <code>pip list | grep aiogram</code> <code>pip list | grep aiogram</code>
  
-Создаём скрипт+Создаём скрипт Python:
  
 <code> <code>
-Тут код+import asyncio 
 +import logging 
 +import sqlite3 
 +from aiogram import Router, F, Bot, Dispatcher 
 +from aiogram.types import Message, ReplyKeyboardMarkup, KeyboardButton 
 +from aiogram.filters import CommandStart, Command 
 + 
 +router = Router() 
 +TOKEN='xxx' 
 +maink = ReplyKeyboardMarkup (keyboard=[[KeyboardButton(text='Список пользователей')]], resize_keyboard=True) 
 + 
 +@router.message (CommandStart()) 
 +async def cmd_start(message: Message): 
 +    await message.answer('Привет!', reply_markup = maink) 
 + 
 +@router.message (F.text == 'Список пользователей'
 +async def database (message: Message): 
 +    con = sqlite3.connect('/home/bsk23-01-student-1/python/pythondb2'
 +    cur = con.cursor() 
 +    cur.execute('SELECT * FROM users'
 +    data_list = cur.fetchall() 
 +    con.close() 
 +    for data in data_list: 
 +        await message.answer(f'Имя {data[0]}; Boзpacт {data[1]}'
 + 
 +@router.message() 
 +async def word (message: Message): 
 +    await message.reply('Я тебя не понимаю!'
 + 
 +async def main(): 
 +    bot = Bot(token=TOKEN) 
 +    dp = Dispatcher() 
 +    dp.include_router(router) 
 +    await dp.start_polling (bot) 
 + 
 +if __name__=="__main__": 
 +    logging.basicConfig(level=logging.INFO) 
 +    try: 
 +        asyncio.run(main()) 
 +    except KeyboardInterrupt: 
 +        print('Exit'
 </code> </code>
  
Строка 35: Строка 79:
  
 Получаем токен и записываем его в значение переменную TOKEN в скрипте. Получаем токен и записываем его в значение переменную TOKEN в скрипте.
 +
 +Запускаем наш Python-скрипт. Должны увидеть следующее:
 +
 +<code>
 +(tgbot) bsk23-01-student-1@BSK23-01-1:~/tgbot$ python3 tgbot.py
 +INFO:aiogram.dispatcher:Start polling
 +INFO:aiogram.dispatcher: Run polling for bot @My_WiFi_Users_bot id=6937598587
 +'My_WiFi_Users'
 +</code>
 +
 +Открываем на телефоне Telegram, подключаемся к своему боту, запускаем!
 +
 +{{:users_in_tg.jpg?400|}}