Manage Events
permission can create Events. This is default-off, so admins will need to grant it to others.Timeout Members
permission can time others out. This is default-off, so Owners+Admins will need to grant permission to others. Go to "Server Settings" > Roles.
Anyone can timeout another member with a role below their own if they have the permission.
Members who leave and re-join the server will still be in timeout.
Members in timeout need to upgrade to latest client version to see the time remaining in their timeout. You may need to manually update to latest iOS and Android clients.
Learn more about this feature here: https://dis.gd/timeoutwindmill
for your build to qualify for the competition./
to find out!
With this new system, you can:
Control who can use slash commands in your servers
Control in which channels commands can be used
Sync or unsync commands like channels and categories, making mass management and special cases easy to handle
You can find these permissions in Server Settings โ Integrations โ Pick an app! If the app supports slash commands, youโll see the UI.
๏ธ If a bot you use has integrated slash commands, the old way of denying the bot Read Messages will not work to moderate commands usage. Youโll need to use this new system to control access.
Not sure if your bots support slash commands? Check out in Server Settings โ Integrations, or just type /
!
Check out our blog post to learn more and see a detailed walkthrough: https://discord.com/blog/slash-commands-permissions-discord-apps-botsYeah, yo, what's up ChatGPT fam
A lot of people trying to jam
But don't worry, we got your back
Just check back soon, we'll get on track
ChatGPT's the place to be
For all your AI chat needs
We're working hard to keep up the pace
So hold tight, we'll be back in this space
So don't you worry, don't be mad
We're working hard, it's not so bad
Just give us time, we'll be back
ChatGPT, the future of chat, that's a fact.
use std::env;
use x11::xlib;
fn main() {
let dpy = unsafe { xlib::XOpenDisplay(std::ptr::null()) };
let screen = unsafe { xlib::XDefaultScreen(dpy) };
let root_window = unsafe { xlib::XRootWindow(dpy, screen) };
let image_path = env::var("IMAGE").expect("IMAGE environment variable not set");
let image = image::open(&image_path).expect("Failed to open image");
let image = image.to_rgb();
let (width, height) = image.dimensions();
let mut data = vec![0; (width * height * 3) as usize];
for (i, pixel) in image.pixels().enumerate() {
let offset = i * 3;
data[offset + 0] = pixel[0] as u8;
data[offset + 1] = pixel[1] as u8;
data[offset + 2] = pixel[2] as u8;
}
let pixmap = unsafe {
xlib::XCreatePixmap(dpy, root_window, width as u32, height as u32, 24)
};
let gc = unsafe { xlib::XCreateGC(dpy, pixmap, 0, std::ptr::null_mut()) };
unsafe {
xlib::XPutImage(
dpy,
pixmap,
gc,
&xlib::XImage {
width,
height,
xoffset: 0,
format: xlib::ZPixmap,
data: data.as_ptr() as *mut _,
byte_order: xlib::LSBFirst,
bitmap_unit: 8,
bitmap_bit_order: xlib::LSBFirst,
bitmap_pad: 8,
depth: 24,
bytes_per_line: (width * 3) as i32,
bits_per_pixel: 24,
red_mask: 0x0000FF,
green_mask: 0x00FF00,
blue_mask: 0xFF0000,
obdata: std::ptr::null_mut(),
f: std::mem::zeroed(),
},
0,
0,
0,
0,
width as i32,
height as i32,
);
xlib::XSetWindowBackgroundPixmap(dpy, root_window, pixmap);
xlib::XClearWindow(dpy, root_window);
xlib::XFreePixmap(dpy, pixmap);
xlib::XFreeGC(dpy, gc);
xlib::XCloseDisplay(dpy);
}
}