Random Coffee alternative - random meetings for Telegram chats
https://t.me/ranteabot
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.5 KiB
43 lines
1.5 KiB
2 years ago
|
import telebot
|
||
|
import typing
|
||
|
import random
|
||
|
import string
|
||
|
|
||
|
|
||
|
def generate_id() -> str:
|
||
|
return ''.join(random.choice(string.digits + string.ascii_lowercase) for _ in range(8))
|
||
|
|
||
|
|
||
|
def isint(st: str) -> bool:
|
||
|
try:
|
||
|
int(st)
|
||
|
return True
|
||
|
except ValueError:
|
||
|
return False
|
||
|
|
||
|
|
||
|
def create_inline_button(text: str, callback_data: str) -> telebot.types.InlineKeyboardButton:
|
||
|
if callback_data.strip().startswith('https://') or callback_data.startswith('tg://'):
|
||
|
return telebot.types.InlineKeyboardButton(text, url=callback_data)
|
||
|
if callback_data.strip().startswith('inline://'):
|
||
|
telebot.types.InlineKeyboardButton(text,
|
||
|
switch_inline_query_current_chat=callback_data.replace('inline://', ''))
|
||
|
if callback_data.strip().startswith('inline_other://'):
|
||
|
telebot.types.InlineKeyboardButton(text, switch_inline_query=callback_data.replace('inline_other://', ''))
|
||
|
return telebot.types.InlineKeyboardButton(text, callback_data=callback_data)
|
||
|
|
||
|
|
||
|
def create_keyboard(rows: typing.List[typing.List[str]]):
|
||
|
is_inline = not isinstance(rows[0][0], str)
|
||
|
markup = telebot.types.InlineKeyboardMarkup() if is_inline else telebot.types.ReplyKeyboardMarkup(
|
||
|
resize_keyboard=True)
|
||
|
for row in rows:
|
||
|
if is_inline:
|
||
|
markup.row(*(
|
||
|
create_inline_button(text, callback_data)
|
||
|
for text, callback_data in row
|
||
|
))
|
||
|
else:
|
||
|
markup.row(*(telebot.types.KeyboardButton(text) for text in row))
|
||
|
return markup
|