queue_len = len(self.song_queue[ctx.guild.id])
KeyError: 902227097647468664
result = введённое_тобой_выражение
if result is not None:
print(repr(result))
foo
bar
"foo\nbar"
по видеоуроку ХаудиХо
import sys
import pathlib
script_path = pathlib.Path(sys.argv[0]).parent # абсолютный путь до каталога, где лежит скрипт
conn = sqlite3.connect(script_path / "Database.db") # формируем абсолютный путь до файла базы
with open('afk_users.json', 'w', encoding='utf-8') as file:
file.write(json.dumps(afk_users, indent=4, ensure_ascii=False))
file.close()
with open('afk_users.json', 'w', encoding='utf-8') as file:
json.dump(afk_users, file, indent=4, ensure_ascii=False))
If not None, daemon parameter explicitly sets whether the thread is daemonic. If None (the default), the daemonic property is inherited from the current thread.
daemon
A boolean value indicating whether this thread is a daemon thread (True) or not (False). This must be set before start() is called, otherwise RuntimeError is raised. Its initial value is inherited from the creating thread; the main thread is not a daemon thread and therefore all threads created in the main thread default to daemon = False.
The entire Python program exits when no alive non-daemon threads are left.
# этот код изменит твой массив "на месте", а не создаст изменённую копию!
for mas_item in mas: # для каждого словаря в твоем списке
for data_dict in mas_item['data']: # для каждого словаря в списке по ключу data
# словари не любят, когда их модифицируют и проходятся по ним for'ом одновременно
data_dict_keys = list(data_dict.keys()) # так что заранее составляем список ключей словаря
for key in data_dict_keys: # проходимся по этим ключам
data_dict[key] = data_dict[key].replace('_', '') # и обрабатываем значения по этим ключам
import time
import sqlite
connection = sqlite3.connect('bot.db')
cursor = connection.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS users ( -- всё что после -- комментарий SQL
id TEXT PRIMARY KEY, -- идентификатор пользователя, он же первичный ключ таблицы
first_use REAL, -- метка времени, когда пользователь впервые обратился к боту
last_use REAL -- метка времени, когда пользователь последний раз обратился к боту
)""")
cursor.close()
def ensure_user_stats(user_id):
"Эта функция обновляет таблицу users, и должна вызываться в начале обработки каждой команды."
global connection
cursor = connection.cursor()
now = time.time()
# пытаемся добавить строку с указанным id, и фиксируем текущее время в полях first_use и last_use
# если возникает конфликт в поле id (такое id уже есть),
# то мы обновляем в этой записи поле last_use на текущее время, а остальное не трогаем
cursor.execute("""INSERT INTO users (id, first_use, last_use) VALUES (?, ?, ?)
ON CONFLICT (id) DO UPDATE SET last_use = excluded.last_use""", (user_id, now, now))
cursor.close()
description = f"""У тебя , **{ctx.author}** вот столько балов!**{cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]} :polegar_para_cima:**"""
description = f"""У тебя , **{ctx.author}** вот столько балов!**{cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]} :polegar_para_cima:**"""
score = cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id)).fetchone()[0]
description = f"""У тебя , **{ctx.author}** вот столько балов!**{score} :polegar_para_cima:**"""
score = cursor.execute("SELECT cash FROM users WHERE id = {}".format(ctx.author.id))
score = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) )
score = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) ).fetchone()[0]
description = f"""У тебя , **{ctx.author}** вот столько балов!**{score} :polegar_para_cima:**"""
score_row = cursor.execute("SELECT cash FROM users WHERE id = ?", (ctx.author.id,) ).fetchone()
if score_row is not None:
description = f"""У тебя , **{ctx.author}** вот столько балов!**{score_row[0]} :polegar_para_cima:**"""
else:
# что делать, если такого юзера еще нет в базе?
cursor.execute("INSERT INTO users (id, cash) VALUES (?, 0)", (ctx.author.id,) ) # можно его добавить
description = f"""У тебя , **{ctx.author}** пока нет ничего! Но скоро будет!"""
# оба модуля - встроенные, а не сторонние
import inspect
import dis
def callee(x):
our_frame = inspect.currentframe()
our_caller_frame = our_frame.f_back
our_caller = our_caller_frame.f_code
print(f"We are called by {our_caller.co_name}(), at line {our_caller_frame.f_lineno}")
print("Our caller's code goes as following (byte string):")
print(our_caller.co_code)
bytecode = dis.Bytecode(our_caller, first_line=our_caller.co_firstlineno)
print("Or, in human readable form, its this:")
print(bytecode.dis())
return [x*x]
def caller():
print("Calling callee()")
y = callee(2)
print(y)
def other_caller():
print("Calling callee()")
z, *_ = callee(3)
print(z)
caller()
other_caller()