Skip to content

Instantly share code, notes, and snippets.

@mahenzon
Created April 8, 2025 07:49
Show Gist options
  • Save mahenzon/7c31aaa3b4e00d62cdc6b1a1f2289a7b to your computer and use it in GitHub Desktop.
Save mahenzon/7c31aaa3b4e00d62cdc6b1a1f2289a7b to your computer and use it in GitHub Desktop.
Example Telegram bot | Lerna × Suren
import os
TOKEN = os.getenv(
"BOT_TOKEN",
"123:abc",
)
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)
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()
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