import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
intents.presences = True
bot = commands.Bot(command_prefix="!", intents=intents)
@bot.command(name="activity")
async def get_activity(ctx, member: discord.Member):
# Проверяем, есть ли у пользователя активность
if member.activity:
# Если активность есть, выводим её название
await ctx.send(f"{member.name} играет в: {member.activity.name}")
else:
# Если активности нет, сообщаем об этом
await ctx.send(f"{member.name} в данный момент ничего не играет.")
bot.run('YOUR_BOT_TOKEN')
import discord
from discord.ext import commands
import json
import os
intents = discord.Intents.default()
intents.members = True
intents.presences = True
bot = commands.Bot(command_prefix="!", intents=intents)
# Файл для хранения истории активностей
ACTIVITY_HISTORY_FILE = "activity_history.json"
# Загружаем историю активностей из файла (если файл существует)
if os.path.exists(ACTIVITY_HISTORY_FILE):
with open(ACTIVITY_HISTORY_FILE, "r") as f:
activity_history = json.load(f)
else:
activity_history = {}
@bot.event
async def on_presence_update(before, after):
# Сохраняем активность пользователя, если она изменилась
if after.activity and after.activity != before.activity:
user_id = str(after.id)
if user_id not in activity_history:
activity_history[user_id] = []
activity_history[user_id].append(after.activity.name)
# Сохраняем историю в файл
with open(ACTIVITY_HISTORY_FILE, "w") as f:
json.dump(activity_history, f)
@bot.command(name="activity")
async def get_activity(ctx, member: discord.Member):
user_id = str(member.id)
if user_id in activity_history:
# Выводим историю активностей пользователя
activities = activity_history[user_id]
await ctx.send(f"{member.name} играл в: {', '.join(activities)}")
else:
await ctx.send(f"У {member.name} нет сохранённой истории активностей.")
bot.run('YOUR_BOT_TOKEN')
!activity @Username
import chromadb
from chromadb.utils import embedding_functions
import numpy as np
# Инициализация ChromaDB
client = chromadb.Client()
# Создание коллекции
collection = client.create_collection(name="text_collection")
# Добавление текстов и их векторных представлений
texts = ["текст 1", "текст 2", "текст 3", "текст 4", "текст 5"]
embeddings = embedding_functions.DefaultEmbeddingFunction()(texts)
for idx, (text, embedding) in enumerate(zip(texts, embeddings)):
collection.add(ids=[str(idx)], embeddings=[embedding], documents=[text])
# Получение всех векторов из коллекции
all_embeddings = collection.get(include=["embeddings"])["embeddings"]
# Вычисление среднего расстояния для каждого вектора
def cosine_distance(vec1, vec2):
return 1 - np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))
average_distances = []
for i, vec1 in enumerate(all_embeddings):
distances = []
for j, vec2 in enumerate(all_embeddings):
if i != j:
distances.append(cosine_distance(vec1, vec2))
average_distances.append(np.mean(distances))
# Сортировка по убыванию среднего расстояния
sorted_indices = np.argsort(average_distances)[::-1]
# Вывод топ n самых не похожих результатов
n = 5
top_n_indices = sorted_indices[:n]
top_n_texts = [texts[i] for i in top_n_indices]
print("Топ", n, "самых не похожих текстов:")
for text in top_n_texts:
print(text)
$url = $path.'?'.urldecode(http_build_query($params));
$response = Http::get($url);
$array = $response->json();
// Извлекаем массив пользователей
$users = $array['users'];
// Вставляем данные в базу данных
foreach ($users as $userData) {
DB::table('users')->insert($userData);
}
foreach ($users as $userData)
— проходит по каждому элементу массива (пользователю) и вставляет его данные в базу данных.$url = $path.'?'.urldecode(http_build_query($params));
$response = Http::get($url);
$array = $response->json();
// Извлекаем массив пользователей
$users = $array['users'];
// Вставляем данные в базу данных
foreach ($users as $userData) {
// Меняем имена столбцов ("id" становится "user_id" и т.д.)
$mappedData = [
'user_id' => $userData['id'],
'full_name' => $userData['name'],
'username' => $userData['login'],
];
// Вставляем данные в базу
DB::table('users')->insert($mappedData);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="features">
<!-- блок с секциями -->
<div id="main-block">
<!-- секция с показателями кислорода -->
<section class="oxygen-saturation">
<img src="assets/services/heart.svg" alt="Сердце" width="45px">
<h2>Измерение уровня кислорода в крови</h2>
<p>Измеряйте уровень насыщения крови кислородом в любой момент прямо со своего запястья.</p>
</section>
<!-- секция с отслеживанием сна -->
<section class="sleep-tracking">
<img src="assets/services/clock.svg" alt="Часы" width="45px">
<h2>Отслеживание сна</h2>
<p>Настройте цель сна, время отхода ко сну и время пробуждения, а также отслеживайте свой прогресс.</p>
</section>
<!-- секция с обнаружением мытья рук -->
<section class="hand-washing-detection">
<img src="assets/services/wash.svg" alt="Мыло" width="45px">
<h2>Обнаружение мытья рук</h2>
<p>Часы автоматически обнаруживают, что вы начали мыть руки, и устанавливают таймер на 20 секунд.</p>
</section>
</div>
</div>
</body>
</html>
Проблема заключалась в сонной голове и в настройках самого сайта Google.
Согласно настройкам профиля, все страницы Google были тёмными.
Чтобы это исправить, нужно на странице поиска google нажать на свой аватар справа вверху. Откроется меню, внизу будет "дополнительные настройки". Далее, слева в меню нажми "другие настройки" и внутри, в разделе "Рабочий стол", будет первым пунктом выбор темы.
Причины изменения настроек темы сайта Google без ведома автора вопроса неизвестны. Вероятно, какое-то расширение браузера сделало это автоматически.
C:\Users\<username>\AppData\Local\Google\Chrome\User Data\
~/Library/Application Support/Google/Chrome/
~/.config/google-chrome/
WITH ordered_documents AS (
SELECT
id,
dt,
ROW_NUMBER() OVER (ORDER BY dt) AS new_id
FROM
d_selling
)
UPDATE d_selling ds
SET id = od.new_id
FROM ordered_documents od
WHERE ds.id = od.id AND ds.dt = od.dt;
progressbar.addEventListener('click', (event) => {
event.preventDefault();
// Получаем позицию и размеры прогресс-бара
const rect = progressbar.getBoundingClientRect();
// Вычисляем новое время на основе положения клика
const newTime = ((event.clientX - rect.left) / rect.width) * video.duration;
console.log('New time:', newTime);
if (video && progressbar) {
video.currentTime = newTime;
} else {
console.error('Видео или прогрессбар не найден');
}
});
from aiogram import Bot, Dispatcher, types
from aiogram.types import MediaGroup
from aiogram.utils import executor
import asyncio
API_TOKEN = 'YOUR_BOT_API_TOKEN'
ADMIN_CHAT_ID = 'ADMIN_CHAT_ID' # Замените на ID чата администратора
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
# Хранение временных данных для групп фотографий
media_groups = {}
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
await message.reply("Привет! Отправь мне фотографии для предложки.")
@dp.message_handler(content_types=types.ContentType.PHOTO)
async def handle_photo(message: types.Message):
user_id = message.from_user.id
media_group_id = message.media_group_id
if media_group_id:
# Если это группа медиафайлов
if media_group_id not in media_groups:
media_groups[media_group_id] = {
'user_id': user_id,
'photos': []
}
# Добавляем фото в группу
media_groups[media_group_id]['photos'].append(message.photo[-1].file_id)
# Ждем завершения группы (Telegram отправляет группу частями)
await asyncio.sleep(1) # Небольшая задержка для сбора всех частей группы
else:
# Если это одиночное фото
await bot.send_photo(ADMIN_CHAT_ID, message.photo[-1].file_id)
@dp.message_handler(content_types=types.ContentType.ANY)
async def handle_media_group(message: types.Message):
"""Обработчик для завершения группы медиафайлов."""
media_group_id = message.media_group_id
if media_group_id and media_group_id in media_groups:
# Отправляем группу фотографий администратору
group_data = media_groups[media_group_id]
album = MediaGroup()
for photo in group_data['photos']:
album.attach_photo(photo)
await bot.send_media_group(ADMIN_CHAT_ID, media=album)
# Удаляем группу из временного хранилища
del media_groups[media_group_id]
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
<!-- Select родительских категорий -->
<select name="categoryfilter">
<option disabled="disabled" selected value="">Выберите категорию</option>
<option value="1">Категория 1</option>
<option value="2">Категория 2</option>
</select>
<!-- Select дочерних категорий -->
<select name="subcategories"></select>
<!-- Подключение JQuery для примера -->
<script
src="https://code.jquery.com/jquery-3.6.0.min.js"
integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
crossorigin="anonymous"></script>
<!-- Логика клиентской части -->
<script type="text/javascript">
// Вешаем событие изменения на селект категорий
$('select[name="categoryfilter"]').on('change', function(){
let val = $(this).val(); // value только что выбранной категории
$('select[name="categoryfilter"]').html(''); // Очищаем фильтр дочерних категорий
//Запрашиваем данные
$.ajax({
url: '/path/to/file', // Путь к файлу PHP от корня сайта
type: 'POST', // Отправляем данные методом POST
dataType: 'json', // Ждём что сервер вернёт JSON
data: {
category: val, // Отправляем переменную 'category' со значением 'val'
},
})
.done(function(data) {
// Когда сервер вернул JSON
// Перебираем данные циклом
$.each(data, function(index, item) {
// Добавляем внутрь select'а дочерних категорий новые опции
$('select[name="subcategories"]').append('\
<option value="' + item.id + '">' + item.name + '</option>\
');
});
})
.fail(function() {
// Любая ошибка
console.log("error");
})
.always(function() {
// Когда запрос завершился успешно или с ошибкой
console.log("complete");
});
});
</script>
</body>
</html>
<?php
//Тут должна быть логика загрузки нужных дочерних
//категорий согласно пришедшему значению 'category' ($_POST['category'])
$subCategories = [
[
'id' => 1,
'name' => 'Дочерняя категория 1',
],
[
'id' => 2,
'name' => 'Дочерняя категория 2',
],
[
'id' => 3,
'name' => 'Дочерняя категория 3',
],
];
//json_encode превращяет массив PHP в JSON, который ждёт AJAX
exit(json_encode($subCategories));
?>
Я получаю такую строку : {"day":0,"week":186,"month":186}
из неё хочу брать только день и число
<?php
$url = "http://$server/api/?" .http_build_query($request_params);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Получаем JSON
$response = curl_exec($ch);
curl_close($ch);
//Декодируем JSON в PHP объект
$data = json_decode($response);
//Выводим только нужные элементы
echo 'Day: '.$data->day.PHP_EOL;
echo 'Week: '.$data->week.PHP_EOL;
echo 'Month: '.$data->month.PHP_EOL;
?>
<?php
// Создаём DOM из строки
$html = str_get_html('
<div id="hello">Hello</div>
<div id="world">World</div>
');
// Ищем элемент 'div' с 'id="hello"' и меняем его содержимое на 'foo'
$html->find('div[id=hello]', 0)->innertext = 'foo';
// Ищем второй элемент 'div' по порядку и добавляем ему класс 'bar'
$html->find('div', 1)->class = 'bar';
echo $html;
// Результат:
// <div id="hello">foo</div>
// <div id="world" class="bar">World</div>
?>