Меню

Телеграмм-боты 

Прогноз погоды

Всем привет! Я долго думал над тем какого ещё можно написать бота для телеграмм. И вот, придумал - бота для прогноза погоды. Так вот, за основу я взял бота отсюда, только поменял библиотеку aiogram на telebot, ну и упростил код) Чтобы сделать бота нам будет необходимо получить токен из этого сайта и от BotFather. (Чтобы узнать как это сделать перейдите по этой ссылке (Ага, это та же ссылка что и в начале)).

Когда со всеми настройками будет покончено, переходим в нашу IDE и начинаем писать код:)


# Импортируем нужные библиотеки

import requests

import telebot

import math


bot = telebot.TeleBot('Ваш токен от BotFather')


# Создаём функцию, обрабатывающую команду старт

@bot.message_handler(commands=["start"])

def start(m, res=False):

    # Отправляем сообщение пользователю

    bot.send_message(m.chat.id, 'Доброго времени суток) Напиши мне название города, и я скажу какая там погода.')


# Обрабатываем входные данные

@bot.message_handler(content_types=["text"])

def handle_text(message):


    # Присваиваем переменной 'city' значение вводимых данных

    city = message.text.strip()


    # Создаём функцию в которой делаем get-запрос

    def get_weather(city):

        api_key = 'Ваш api из сайта погоды'

        url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&lang=ru&appid={api_key}&units=metric'


        response = requests.get(url)

        weather_data = response.json()


        # На сайте погоды поищите, там где-то в api было сказано как вытягивать данные

        if weather_data['cod'] == 200:

            weather_description = weather_data['weather'][0]['description']

            temp = weather_data['main']['temp']

            wind = weather_data["wind"]["speed"]

            humidity = weather_data["main"]["humidity"]

            pressure = weather_data["main"]["pressure"]

            return f'Сейчас в городе {city} {weather_description}. Температура: {temp}°C. Ветер: {wind}м/с. Влажность: {humidity}%. Давление: {math.ceil(pressure / 1.333)} мм.рт.ст'

        else:

            return 'Извините, не удалось получить информацию о погоде.'


    # Отправляем ответ пользователю

    bot.send_message(message.chat.id, get_weather(city))


# Запускаем бота

bot.polling(none_stop=True, interval=0)


На этом всё, наш бот готов. До встречи)




Как написать чат-бота в телеграмм... 

Не хочу делать долгое вступление, поэтому перейдём сразу к делу.

Чтобы создать любого бота в телеграмм нужно получить свой токен, для этого перейдите по ссылке: https://t.me/BotFather и выполните инструкции бота (приложение к получению токена смотрите ниже⬇️)

Теперь когда у нас есть токен, можем начать программировать своего бота.

Для начала создадим папку (можете назвать как хотите), а в этой папке создадим txt-файл "boltun.txt" (лучше не меняйте название, если не разбираетесь в кодинге) и файл Python (также можете назвать как хотите). Ну, вот всё и готово;)

Шучу), теперь перейдём к самой важной части - кодингу: открываем наш Python файл в среде разработки (я пользуюсь Thonny), скачиваем все нужные библиотеки (telebot, os и fuzzywuzzy) и вставляем туда такой код:

# Импортируем все нужные библиотеки 

import telebot

import os

from fuzzywuzzy import fuzz


# Создаем бота, пишем свой токен

bot = telebot.TeleBot('Здесь пишим свой токен, полученый от BotFather')


#Загружаем массив

mas=[]


#Открываем txt файл и загружаем его в массив 

f = open('boltun.txt', 'r')

mas = f.readlines()



# С помощью fuzzywuzzy вычисляем наиболее похожую фразу и выдаем в качестве ответа следующий элемент списка

def answer(text):

    try:

        text=text.lower().strip()

        if os.path.exists('boltun.txt'):

            a = 50

            n = 0

            nn = 0

            for q in mas:

                if('u: ' in q):

                    # С помощью fuzzywuzzy получаем, насколько похожи две строки

                    aa=(fuzz.token_sort_ratio(q.replace('u: ',''), text))

                    if(aa > a and aa!= a):

                        a = aa

                        nn = n

                n = n + 1

            # В качестве ответа отправляем следующую строку со списка

            s = mas[nn + 1]

            return s

        else:

            return 'Ошибка'

    except:

        return 'Ошибка'

# Команда «Старт»

@bot.message_handler(commands=["start"])


# Получение сообщений от юзера


@bot.message_handler(content_types=["text"])

def handle_text(message):

    

    s=answer(message.text)

   

   

    bot.send_message(message.chat.id, s)

# Запускаем бота

bot.polling(none_stop=True, interval=0)

# Код был частично взят из сайта https://xakep.ru/

 

Теперь нужно что-то написать в txt-файл. Пишем так: первая строка (u: 'Запрос')

Вторая строка ('Ответ')


Ну, типо этого:

u: привет

Привет!

И так далее... 



Ну всё, наш бот готов, результаты выполнения программы смотрите ниже⬇️




Как сделать так, чтобы мой бот работал постоянно... 

Как сделать так, чтобы мой бот работал постоянно? Вот ответ: опубликовать его на сервере. 

Покажу на примере этого облачного сервера: https://www.pythonanywhere.com/

(На этом сервере можно разместить только один проект)


Заходим на сайт, кликаем на три полоски, а теперь ищем "Files". У "Files" создаём новый файл. В открывшейся редактор вставляем код бота. И снова три полоски, в списке ищем "Consoles". А консоль нам нужна такая: "Bush...", в ней мы устанавливаем плагины. Кликаем на три полоски, ищем "Files" и находим нашего бота. Сохраняем код нажатием на "Save" и запускаем, кликая "Run". Всё, наш бот больше не будет отключаться) А, регистрация, ну я думаю вы и сами справитесь)

(Приложение к установке на сервере смотрите внизу⬇️)

Настройки файлов cookies
X
Этот сайт использует файлы cookie, чтобы упростить для вас просмотр сайта.
Вы можете принять их все или выбрать типы файлов cookies, которые вы готовы разрешить.
Настройки конфиденциальности
Выберите, какие файлы cookies вы хотите разрешить при просмотре этого сайта. Обратите внимание, что некоторые файлы cookies нельзя отключить, так как без них сайт не будет работать.
Важные
Для предотвращения спама этот сайт использует Google Recaptcha в своих контактных формах.

Этот сайт также может использовать файлы cookies для электронной коммерции и платежных систем, которые необходимы для правильной работы сайта.
Службы Google
Этот сайт использует файлы cookie Google для доступа к таким данным, как страницы, которые вы посещаете, и ваш IP-адрес. Сервисы Google на этом сайте могут включать:

- Карты Google
Основанные на данных
Этот сайт может использовать файлы cookie для записи поведения посетителей, отслеживания рекламных конверсий и создания аудиторий, в том числе из:

- Google Analytics
- Мониторинг конверсий Google Ads
- Facebook (Meta Пиксель)