Не выводится ascii_letters в telebot
Бот должен выдавать рандомное значение из ascii_letters, но почему-то этого не делает. Пытался вывести еще просто в print, но тоже не выходит. Несколько вариантов попробовал, но ничего не получается. Пока что остановился на:
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call, payid= (random.choice(ascii_letters))):
if call.message:
if call.data == 'yes':
#payid += random.choice(ascii_letters)
bot.send_message(call.message.chat.id,'Вот твоя ссылка на оплату: [ссылка позже].\nОбязательно в комментариях к оплате укажи этот код: ', payid)
elif call.data == 'no':
bot.send_message(call.message.chat.id,'Хорошо, заказ отменен')
Если есть ошибка в функции, то прошу прощения, так как больше ничего не смог придумать.
Ответы (1 шт):
Чтобы получить случайную букву с
stringascii_letters:
from string import ascii_letters
from random import choice
random_letter = choice(ascii_letters)
print(random_letter) # OUTPUT: P
Вы передаёте
payid= (random.choice(ascii_letters))в качестве принимающего параметра функцииcallback_inline
Чтобы получить менее желаемый результат необходимо написать:
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.message:
if call.data == 'yes':
payid = choice(ascii_letters) # Letter in payid
bot.send_message(call.message.chat.id, f'Вот твоя ссылка на оплату: [ссылка позже].\nОбязательно в комментариях к оплате укажи этот код: {payid}')
elif call.data == 'no':
bot.send_message(call.message.chat.id,'Хорошо, заказ отменен')
К тому же я понял, что вы сами не знаете, что желаете получить, а именно вы хотели бы получить случайное число, не знаю в каком диапазоне, пример оставлю ниже:
from random import randint
random_digit = randint(0, 999)
print(random_digit) # OUTPUT: 105
Подробнее о string и random читайте в оф. документациях..