Merge pull request #24 from Trivernis/develop

Develop
pull/26/head v0.6.6
Trivernis 3 years ago committed by GitHub
commit 4d561c62cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
target
.env

@ -0,0 +1,47 @@
name: Build and Test
on:
workflow_dispatch:
push:
branches: [ main, actions ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ hashFiles('Cargo.lock') }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: ${{github.event.inputs.platforms}}
push: true
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
tags: |
trivernis/tobi:latest

2
Cargo.lock generated

@ -2483,7 +2483,7 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tobi-rs"
version = "0.6.5"
version = "0.6.6"
dependencies = [
"aspotify",
"bot-coreutils",

@ -1,6 +1,6 @@
[package]
name = "tobi-rs"
version = "0.6.5"
version = "0.6.6"
authors = ["trivernis <trivernis@protonmail.com>"]
edition = "2018"

@ -0,0 +1,24 @@
# syntax=docker/dockerfile:1.0-experimental
FROM rust:latest AS builder
RUN apt-get update
RUN apt-get install -y build-essential libssl-dev libopus-dev libpq-dev
WORKDIR /usr/src
RUN USER=root cargo new tobi
WORKDIR /usr/src/tobi
COPY Cargo.toml Cargo.lock ./
COPY src ./src
COPY bot-coreutils ./bot-coreutils
COPY bot-database ./bot-database
COPY bot-serenityutils ./bot-serenityutils
RUN --mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=target \
cargo build --release
RUN mkdir /tmp/tobi
RUN --mount=type=cache,target=target cp target/release/tobi-rs /tmp/tobi/
FROM bitnami/minideb:latest
RUN install_packages openssl libopus0 ffmpeg python3 python3-pip libpq5
RUN pip3 install youtube-dl
RUN rm -rf /var/lib/{apt,dpkg,cache,log}/
COPY --from=builder /tmp/tobi/tobi-rs .
ENTRYPOINT ["/tobi-rs"]

@ -4,9 +4,9 @@ extern crate diesel;
#[macro_use]
extern crate diesel_migrations;
use crate::error::DatabaseResult;
use crate::error::{DatabaseError, DatabaseResult};
use diesel::prelude::*;
use diesel::r2d2::{ConnectionManager, Pool};
use diesel::r2d2::{ConnectionManager, ManageConnection, Pool};
use std::env;
pub mod database;
@ -22,11 +22,16 @@ type PoolConnection = Pool<ConnectionManager<PgConnection>>;
embed_migrations!("../bot-database/migrations");
fn get_connection() -> DatabaseResult<PoolConnection> {
dotenv::dotenv()?;
let database_url = env::var("DATABASE_URL").expect("No DATABASE_URL in path");
log::debug!("Establishing database connection...");
let manager = ConnectionManager::<PgConnection>::new(database_url);
log::trace!("Connecting...");
manager
.connect()
.map_err(|e| DatabaseError::Msg(format!("{:?}", e)))?;
log::trace!("Creating pool...");
let pool = Pool::builder().max_size(16).build(manager)?;
log::trace!("Getting one connection to run migrations...");
let connection = pool.get()?;
log::debug!("Running migrations...");
embedded_migrations::run(&connection)?;

@ -15,8 +15,12 @@ pub static VERSION: &str = env!("CARGO_PKG_VERSION");
#[tokio::main]
async fn main() {
let _ = dotenv::dotenv();
init_logger();
let mut client = get_client().await.unwrap();
let mut client = get_client()
.await
.map_err(|e| log::error!("Failed to get client: {:?}", e))
.expect("Failed to get client");
// start listening for events by starting a single shard
if let Err(why) = client.start_autosharded().await {

@ -34,6 +34,7 @@ pub async fn create_now_playing_msg(
channel_id: ChannelId,
) -> BotResult<Arc<RwLock<MessageHandle>>> {
log::debug!("Creating now playing menu");
let nsfw = channel_id.to_channel(ctx).await?.is_nsfw();
let handle = MenuBuilder::default()
.add_control(-1, DELETE_BUTTON, |c, m, r| {
Box::pin(delete_action(c, m, r))
@ -68,7 +69,9 @@ pub async fn create_now_playing_msg(
let mut page = CreateMessage::default();
if let Some((current, _)) = queue.current() {
page.embed(|e| create_now_playing_embed(current.metadata(), e, queue.paused()));
page.embed(|e| {
create_now_playing_embed(current.metadata(), e, queue.paused(), nsfw)
});
} else {
page.embed(|e| e.description("Queue is empty"));
}
@ -97,10 +100,11 @@ pub async fn update_now_playing_msg(
log::debug!("Updating now playing message");
let handle = handle.read().await;
let mut message = handle.get_message(http).await?;
let nsfw = http.get_channel(handle.channel_id).await?.is_nsfw();
message
.edit(http, |m| {
m.embed(|e| create_now_playing_embed(meta, e, paused))
m.embed(|e| create_now_playing_embed(meta, e, paused, nsfw))
})
.await?;
log::debug!("Message updated.");
@ -113,6 +117,7 @@ fn create_now_playing_embed<'a>(
meta: &Metadata,
mut embed: &'a mut CreateEmbed,
paused: bool,
nsfw: bool,
) -> &'a mut CreateEmbed {
embed = embed
.title(if paused { "Paused" } else { "Playing" })
@ -129,8 +134,10 @@ fn create_now_playing_embed<'a>(
))
});
if let Some(thumb) = meta.thumbnail.clone() {
embed = embed.thumbnail(thumb);
if nsfw {
if let Some(thumb) = meta.thumbnail.clone() {
embed = embed.thumbnail(thumb);
}
}
embed

Loading…
Cancel
Save