switch_inline_query_current_chat
равным, допустим, "Аккумуляторы"@bot.message_handler(commands=['start'])
def send_start(message):
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton('Аккумуляторы', switch_inline_query_current_chat='Аккумуляторы'))
bot.send_message(message.chat.id, 'Товары', reply_markup=markup)
@bot.inline_handler(lambda query: query.query == 'Аккумуляторы')
def query_video(inline_query):
r = InlineQueryResultArticle('1', 'SONY VTC6 3000 mah 30A 18650', InputTextMessageContent('Аккумулятор 1'), description='blah', url='https://buy-battery.com/goods/1', hide_url=True, thumb_url='https://via.placeholder.com/50')
r2 = InlineQueryResultArticle('2', 'SONY VTC5A 2600 mah 35A 18650', InputTextMessageContent('Аккумулятор 2'), description='blah', url='https://buy-battery.com/goods/2', hide_url=True, thumb_url='https://via.placeholder.com/50')
bot.answer_inline_query(inline_query.id, [r, r2])
{"success": "false"}
. Далее уже проверяете статус код, либо что нибудь в теле ответа. Это будет правильно.KeyError
, вряд ли такой вид вообще вызывается при таком кодеsome-random-api
не заглушка, а реальный сайт)@commands.command()
async def lyrics(self, ctx,*, title):
url = f"https://some-random-api.ml/lyrics?title={title}"
req = requests.get(url)
response = req.json()
if req.status_code == 200:
lyrics = response['lyrics']
if len(lyrics) > 2048:
em = discord.Embed(title=title,description = f"Я не смог отправить текст этой песни, поскольку он превышает 2000 символов. Однако вот файл с текстами песен!",color=0xa3a3ff)
await ctx.send(embed=em)
with open('lyrics.txt', 'w', encoding='utf-8') as f:
f.write(lyrics)
await ctx.send(file=discord.File('lyrics.txt'))
else:
em = discord.Embed(title=title,description=lyrics,color=0xa3a3ff)
await ctx.send(embed=em)
elif req.status_code == 500:
error = response.get('error', '?')
if error == 'Sorry I couldn\'t find that song\'s lyrics':
em = discord.Embed(title="Вот блин!",description="Мне не удалось найти текст этой песни.",color = 0xa3a3ff)
em.set_thumbnail(url='https://cdn.discordapp.com/attachments/830818408550629407/839555682436251698/aw_snap_large.png')
await ctx.send(embed=em)
elif error == 'Something went wrong with fetching the lyrics':
# тут что-то отвалилось, 500 код как он есть, можно попробовать запрос еще раз отправить на сайт,
# либо сказать пользователю что на сайте проблемы, пусть еще раз попробует
pass
else:
em = discord.Embed(title="Вот блин!", description=f"Неизвестная ошибка: {error}",color = 0xa3a3ff)
em.set_thumbnail(url='https://cdn.discordapp.com/attachments/830818408550629407/839555682436251698/aw_snap_large.png')
await ctx.send(embed=em)
else:
# ну тут уже бог знает что случилось, сайт ни ошибкой, ни хорошим ответом не порадовал.
*args
тоже можно убрать в таком случаеasync def say(ctx, phrase):
embed = discord.Embed(description=phrase, color=0x8A2BE2)
!say "Привет,
мир"
from flask import Flask, request, Response
app = Flask(__name__)
@app.route('/qiwi', methods=['POST'])
def qiwi():
print(request.data)
return Response(status=200)
with open('file.txt', 'r+') as f:
data = json.load(f)
data.append(4)
f.seek(0)
json.dump(data, f)
mp.freeze_support()
сразу после if __name__ == '__main__':
.msg.reply_markup.rows[0].buttons[0].url
import re
msg = '''[Message(id=899, peer_id=PeerUser(user_id=7415649360), date=datetime.datetime(2021, 8, 10, 9, 52, 37, tzinfo=datetime.timezone.utc), message='⚠️ WARNING: The following is a third party advertisement. Do not trust anything that promises to make you money. Use the following website at your own risk.\n--------------------- \n\nFree 100 OZC, price listing $30/OZC \n\nStart in 15/07/2021: Free 100 OZC, price listing $30/OZC \n \n--------------------- \nPress the "Visit website" button to earn LTC.\nYou will be redirected to a third party site.', out=False, mentioned=False, media_unread=False, silent=False, post=False, from_scheduled=False, legacy=False, edit_hide=False, pinned=False, from_id=None, fwd_from=None, via_bot_id=None, reply_to=None, media=None, reply_markup=ReplyInlineMarkup(rows=[KeyboardButtonRow(buttons=[KeyboardButtonUrl(text=' Go to website', url='https://doge.click/visit/Ka1gfo')]), KeyboardButtonRow(buttons=[KeyboardButtonCallback(text=' Report', data=b'{"name":"ReportClick","id":"click_tasks61124bf44b4413.68559229"}', requires_password=False), KeyboardButtonCallback(text='⏩ Skip', data=b'{"name":"SkipClick","id":"click_tasks61124bf44b4413.68559229"}', requires_password=False)])]), entities=[MessageEntityItalic(offset=0, length=156), MessageEntityItalic(offset=157, length=21), MessageEntityBold(offset=182, length=35), MessageEntityItalic(offset=283, length=21), MessageEntityItalic(offset=307, length=45), MessageEntityItalic(offset=353, length=45)], views=None, forwards=None, replies=None, edit_date=None, post_author=None, grouped_id=None, restriction_reason=[], ttl_period=None), total=57]'''
print(re.search(r'(https://.+?)\'', msg).group(1))
@bot.event
async def on_voice_state_update(member, before, after):
# Если пользователь зашел в голосовой канал
if after.channel and after.channel.type == discord.ChannelType.voice:
joined_voice_channel = time.time()
# сохраняем в БД
# если вышел из голосового
if not after.channel and before.channel.type == discord.ChannelType.voice:
leave_voice_channel = time.time()
# достаем из БД joined_voice_channel и вычитаем его из leave_voice_channel
print('Время в голосовом канале:', leave_voice_channel-joined_voice_channel, 'секунд')
Мне надо что бы я смог изменить шрифт текста, который я вывожу в телеграмме, а именно жирний шрифт и подчёркнутый текст.
send_message
передайте аргумент parse_mode
, вам подойдет обычный "Markdown"bot.send_message(chat_id, 'Обычный текст\n*Жирный*\n__подчерктнутый__', parse_mode='Markdown')
Так же мне надо в одно сообщение вставить стикеры
# sendSticker
sti = open('/tmp/sti.webp', 'rb')
tb.send_sticker(chat_id, sti)
tb.send_sticker(chat_id, "FILEID")
fileid
.@bot.message_handler(content_types=['sticker'])
def send_sticker_id(message):
bot.send_message(message.chat.id, f'This sticker id: {message.sticker.file_id}')
bot.send_sticker(chat_id, sticker_id)
, где sticker_id
- id, который получили из кода выше import pyotp
code = pyotp.TOTP(secret_line).now()