Created
April 8, 2025 07:49
-
-
Save mahenzon/7c31aaa3b4e00d62cdc6b1a1f2289a7b to your computer and use it in GitHub Desktop.
Example Telegram bot | Lerna × Suren
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
TOKEN = os.getenv( | |
"BOT_TOKEN", | |
"123:abc", | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
JOKES_API_SINGLE = "https://v2.jokeapi.dev/joke/Programming?blacklistFlags=nsfw,religious,political,racist,sexist,explicit&type=single" | |
JOKES_API_TWO_PART = "https://v2.jokeapi.dev/joke/Programming?blacklistFlags=nsfw,religious,political,racist,sexist,explicit&type=twopart" | |
def get_single_joke(): | |
response = requests.get(JOKES_API_SINGLE) | |
data = response.json() | |
return data["joke"] | |
def get_joke_two_part(): | |
response = requests.get(JOKES_API_TWO_PART) | |
data = response.json() | |
return data["setup"], data["delivery"] | |
if __name__ == '__main__': | |
print(get_single_joke()) | |
print() | |
joke_setup, joke_delivery = get_joke_two_part() | |
print(joke_setup) | |
print(joke_delivery) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import logging | |
import telebot | |
from telebot.util import content_type_media | |
from config import TOKEN | |
from jokes import get_single_joke, get_joke_two_part | |
bot = telebot.TeleBot(TOKEN) | |
START_MESSAGE_TEXT = """ | |
Привет! | |
Напиши мне любое сообщение, и я отвечу тем же. | |
/joke - получить шутку | |
/joke2 - получить составную шутку | |
""" | |
@bot.message_handler(commands=['start', 'help']) | |
def handle_start(message: telebot.types.Message): | |
bot.send_message( | |
chat_id=message.chat.id, | |
text=START_MESSAGE_TEXT, | |
) | |
@bot.message_handler(commands=['joke']) | |
def send_single_joke(message: telebot.types.Message): | |
joke = get_single_joke() | |
bot.reply_to( | |
message=message, | |
text=joke, | |
) | |
@bot.message_handler(commands=['joke2']) | |
def send_two_part_joke(message: telebot.types.Message): | |
joke_setup, joke_delivery = get_joke_two_part() | |
text = telebot.formatting.format_text( | |
joke_setup, | |
telebot.formatting.hspoiler(joke_delivery), | |
) | |
bot.reply_to( | |
message=message, | |
text=text, | |
parse_mode="HTML", | |
) | |
@bot.message_handler(content_types=['text']) | |
def echo_text_message(message: telebot.types.Message): | |
# print(message.text) | |
# print(message.entities) | |
# print([entity.to_dict() for entity in message.entities]) | |
bot.reply_to( | |
message=message, | |
text=message.text, | |
entities=message.entities, | |
) | |
@bot.message_handler(content_types=content_type_media) | |
def copy_any_media_message(message: telebot.types.Message): | |
bot.copy_message( | |
chat_id=message.chat.id, | |
from_chat_id=message.chat.id, | |
message_id=message.message_id, | |
) | |
def main(): | |
logger = logging.getLogger("TeleBot") | |
logger.setLevel(logging.INFO) | |
bot.infinity_polling() | |
if __name__ == "__main__": | |
main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
certifi==2025.1.31 | |
charset-normalizer==3.4.1 | |
idna==3.10 | |
pyTelegramBotAPI==4.26.0 | |
requests==2.32.3 | |
urllib3==2.3.0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment